2

我无法弄清楚如何通过我通过 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"


    );
4

2 回答 2

1

Grep 逐行工作,所以“。” 实际上不匹配换行符。您可能会发现此答案很有帮助。

于 2012-10-24T02:39:00.383 回答
0

默认情况下,python 的 "re" 模块有 "." 匹配除换行符以外的所有内容。您想将 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

于 2012-10-24T02:38:02.237 回答