私は正規表現ではかなり経験がありませんが、関数のパラメータと一致する必要があります。この関数は文字列に複数回現れます。すべてのパラメータのリストを返したいと思います。関数のパラメータの正規表現
正規表現が一致している必要があります:
- 英数字と
- 内部には、特定の関数名の後の括弧
- 内に直接
を引用を強調しここでは例の文字列です:
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側で何かが不足しています。
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)
ます。また、これを試すことができます:
' "r" Atom \( '(\ w +) "'(https://ideone.com/BkY7SD) )。 –
一致または検索? https://stackoverflow.com/questions/180986/what-is-the-difference-between-pythons-re-search-and-re-match – doctorlove