gpt4 book ai didi

python - 函数参数的正则表达式

转载 作者:太空宇宙 更新时间:2023-11-03 14:54:01 25 4
gpt4 key购买 nike

我对正则表达式相当缺乏经验,但我需要一个来匹配函数的参数。该函数将在字符串中出现多次,我想返回所有参数的列表。

正则表达式必须匹配:

  1. 字母数字和下划线
  2. 直接在括号内添加引号
  3. 在特定函数名称之后

这是一个示例字符串:

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|_]*

我用以下方式调用它:

导入重新

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 端实际返回匹配项。

最佳答案

您的正则表达式很接近,您需要添加 \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']

关于python - 函数参数的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45715893/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com