我对regex相当缺乏经验,但我需要一个正则表达式来匹配函数的参数。此函数将多次出现在字符串中,我希望返回所有参数的列表。
正则表达式必须匹配:
下面是一个字符串示例:
Generic3(p, [Generic3(g, [Atom('_xyx'), Atom('y'), Atom('z_')]), Atom('x_1'), Generic2(f, [Atom('x'), Atom('y')])])我想把这个作为输出:
['_xyx', 'y', 'z_', x_1', 'x', 'y']到目前为止我所拥有的是:
(?<=Atom\(')[\w|_]*我这么说是为了:
导入re
s = "Generic3(p, [Generic3(g, [Atom('x'), Atom('y'), Atom('z')]), Atom('x'), Generic2(f, [Atom('x'), Atom('y')])])"
print(re.match(r"(?<=Atom\(')[\w|_]*", s))但这个只是打印None。我感觉自己就快到了,但我遗漏了一些东西,也许是Python方面的东西,可以真正返回匹配项。
发布于 2017-08-16 14:13:30
正则表达式接近,您需要添加\W字符以找到下划线:
s = "Generic3(p, [Generic3(g, [Atom('_xyx'), Atom('y'), Atom('z_')]), Atom('x_1'), Generic2(f, [Atom('x'), Atom('y')])])"
r = "(?<=Atom\()\W\w+"
final_data = re.findall(r, s)您也可以尝试这样做:
import re
s = "Generic3(p, [Generic3(g, [Atom('_xyx'), Atom('y'), Atom('z_')]), Atom('x_1'), Generic2(f, [Atom('x'), Atom('y')])])"
new_data = re.findall("Atom\('(.*?)'\)", s)输出:
['_xyx', 'y', 'z_', 'x_1', 'x', 'y']https://stackoverflow.com/questions/45715893
复制相似问题