我一直在努力编写一个可以匹配我想要的正则表达式。
我希望能够解析整个python源文件,并为该文件获取所有函数定义的列表。
我编写了一些示例文本来解析,尝试接受python函数def中的所有各种复杂性:
def New_function_withSomestuff10(test: str, thing: str,
third: float, last=a(10): int) -> str:
test
def stuff(things):
stuff
def New_function_withSomestuff11(test: str, thing: str,
third: float, last: int) -> str:
test
我有一个当前的正则表达式似乎与这些匹配,但它似乎匹配所有这些:
regex = r'def (?P<name>\w*)\([\s\S]*\):[\s\S]*'
“名称”捕获组仅返回“New_function_withSomestuff10”,并且该捕获组之后的所有内容都会将所有内容写入示例文本的末尾。
我希望得到
re.findall(regex, sample_text)
-> ['New_function_withSomestuff10', 'stuff', 'New_function_withSomestuff11']
任何人都可以帮助我理解我做错了什么吗?我一直试图围绕贪婪与懒惰的量词,前瞻/后瞻和其他这样有用的工具,但他们似乎没有做我需要的东西(或者,更可能的是,我只是错误地使用它们)。 / p>
答案 0 :(得分:0)
我希望以下内容会有所帮助:
regex=r"def (?P<name>\w+)\(.*?\)"
re.findall(regex, sample_text, re.DOTALL)
#['New_function_withSomestuff10', 'stuff', 'New_function_withSomestuff11']
说明:
Regex: def (?P<name>\w+)\(.*?\)
Flag: re.DOTALL