2012-10-24 49 views
2

我無法弄清楚如何通過我通過Python發佈的grep命令來匹配此模式。Python發佈的grep正則表達式匹配此模式

我想匹配的

foo.bar([anything including newlines, spaces, tabs])形式的字符串。

我,試圖:

regex = " foo.bar(.*) " 
bashCommand = "grep"+" -r -h"+regex+baseDir 
process = subprocess.Popen(bashCommand.split(), stdout=subprocess.PIPE) 
requires = process.communicate()[0] 

但我不匹配這個字符串

dojo.require("abc.def" 


    ); 

回答

1

grep的工作線由行,所以 「」實際上並不匹配換行符。你可能會發現this answer有幫助。

0

默認情況下Python的 「重」 模塊 「」匹配除換行符以外的所有內容您想要將re.DOTALL作爲標誌傳遞給您的正則表達式。

實施例:

rx = re.compile('foo\.bar\(.*\)', re.DOTALL) 
assert rx.match('foo.bar("mystuff"\n\nand here!)') 

http://docs.python.org/library/re.html#re.S