Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何编写regexp来获取一个特定的函数参数_Python_Regex - Fatal编程技术网

Python 如何编写regexp来获取一个特定的函数参数

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

我试图编写一个python脚本来收集一个特定函数的参数。 参数可以是多行,如下所示:

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)