Python正则表达式(。*?)没有给出输出

时间:2018-12-13 22:51:06

标签: regex python-3.x

我正在制作一个项目,其中一部分是将python文件作为文本文件并使用正则表达式进行解析。

我能够很好地使用它(程序是一个包含换行符的代码的字符串):

findall(r"def (.*?)\((.*?)\)", program)

但是,当我希望它给出一个Match对象,其中.group()返回“ func1(None,None)”时,此行仅给出None

mainblock = search(r'if __name__ == "__main__":(.*?)#END', program)

我正在解析的python文件的缩写版本如下:

def func1(stuff, morestuff):
    pass

if __name__ == "__main__":
    func1(None, None)
#END

我已经检查了正则表达式本身是否存在差异,但找不到任何差异。我也尝试直接从代码文件复制/粘贴它,但仍然找不到匹配项

1 个答案:

答案 0 :(得分:2)

您需要在正则表达式中包括换行符\n,例如

r'if __name__ == "__main__":\n(.*?)\n#END'

或启用DOTALL标志,这意味着.也与换行符匹配。

({MULTILINE表示其他含义,可能与直觉相反。)