【发布时间】:2019-05-15 05:18:27
【问题描述】:
我正在制作一个项目,其中一部分是将 python 文件作为文本文件接收并使用正则表达式对其进行解析。
我能够很好地使用这个(其中程序是一个包含换行符的代码的字符串):
findall(r"def (.*?)\((.*?)\)", program)
但是当我期望它给出一个匹配对象时,这一行只给出了 None ,其中 .group() 返回“func1(None, None)”
mainblock = search(r'if __name__ == "__main__":(.*?)#END', program)
我正在解析的python文件的缩写版本如下:
def func1(stuff, morestuff):
pass
if __name__ == "__main__":
func1(None, None)
#END
我检查了正则表达式本身是否存在任何差异,但找不到任何差异。我还尝试直接从代码文件中复制/粘贴它,但仍然找不到匹配项
【问题讨论】:
-
是的,程序只是一个包含程序的长字符串,我也尝试添加多行 - 它仍然找不到它
-
这似乎对我有用:ideone.com/rS2slo
-
.*?不会跨越换行符,除非您使用re.MULTILINE修饰符。 -
@Barmar 刚试过,还是返回 None
-
是的,搞糊涂了。下面的答案得到了正确的标志。
标签: regex python-3.x