Python 如何编写regexp来获取一个特定的函数参数
我试图编写一个python脚本来收集一个特定函数的参数。 参数可以是多行,如下所示:Python 如何编写regexp来获取一个特定的函数参数,python,regex,Python,Regex,我试图编写一个python脚本来收集一个特定函数的参数。 参数可以是多行,如下所示: str = "getParameters(['ABCD_1','ABCD_2',\ 'ABCD_3','ABCD_4'])\ 这已经起作用了:(它可以捕捉到“和”之间的所有单词): 但我只希望在getParameters函数中收集参数,这不起作用: getparameters = re.findall(r'getParameters\(\[[\w-]+', str
str = "getParameters(['ABCD_1','ABCD_2',\
'ABCD_3','ABCD_4'])\
这已经起作用了:(它可以捕捉到“和”之间的所有单词):
但我只希望在getParameters函数中收集参数,这不起作用:
getparameters = re.findall(r'getParameters\(\[[\w-]+', str, re.X|re.DOTALL)
for line in getparameters:
print line
请建议 下面是一个使用ast的示例,只是为了好玩
import ast
module = ast.parse(
"""getParameters(['ABCD_1','ABCD_2',
'ABCD_3','ABCD_4'])""")
for item in module.body:
if isinstance(item.value, ast.Call) and item.value.func.id == 'getParameters':
parameters = [each.s for each in item.value.args[0].elts]
print parameters
如果您固定使用正则表达式,并且函数只出现一次,您可以尝试:
re.findall('\'(\w+)\',?', re.search('(getParameters\(.+?\))', x, re.X|re.S).group(1), re.X|re.S)
这并不理想,但很有效。我相信有更好的方法可以做到这一点。我想说清楚:这是使用Python编写的Python代码的函数参数?要在Python中解析Python代码,请查看是的,实际上我想用Python regexp处理Python代码。您的输出应该是什么?getParameters functionHi的参数,谢谢,我想试试,但是:name错误:name'ast'没有定义嗨,你能帮我使用这个ast吗?@Balee13:你忘了第一行。
re.findall('\'(\w+)\',?', re.search('(getParameters\(.+?\))', x, re.X|re.S).group(1), re.X|re.S)