pat = re.compile(r' A(\d+)')
lst = re.findall(pat, "= A1 A2 A3 A4")
これはリストを返し、あなたの例ではタプルを示しました。リストがうまくいくと思いますが、もちろんいつでもできます:
t = tuple(lst)
=私が与えた答えは、実際には入力文字列の をチェックしません。その必要がある場合は、いつでも 2 つのパターンと 2 つの手順を使用できます。
pat0 = re.compile(r'=(?: A\d+)+')
pat1 = re.compile(r' A(\d+)')
m = pat0.search("= A1 A2 A3 A4")
if not m:
print("input string not what was expected")
else:
s = m.group(0)
lst = re.findall(pat, s)
func()編集:あなたの例を処理するコード:
s_code = "func(cmd, param1, param2, param3, param4)"
pat_recognize_args = re.compile(r'func\(cmd([^)]*)\)')
pat_parse_args = re.compile(r'[, ]+([^, ]+)')
m = pat_recognize_args.search(s_code)
if m:
s = m.group(1)
lst = re.findall(pat_parse_args, s)
上記のコードを実行すると、次のようlstに設定されました。['param1', 'param2', 'param3', 'param4']
pat_recognize_argsfuncリテラルを含むリテラル文字列((パターンではバックスラッシュでエスケープされているためre、一致グループの開始に使用しようとしません)、リテラル文字列、リテラル文字cmdまでのすべてに一致する一致グループを探します。 ); 次に、一致グループは a で閉じられ、関数呼び出しを終了する実際のものと一致)するリテラルがあります。このパターンが一致すると、一致オブジェクトのグループ 1 が関数呼び出しからの興味深い引数だけに設定されます。))
s = m.group(1)次に、引数を設定しre.findall()てから、引数を取り出します。