Python正規表現には、0回または何度も発生する可能性のあるグループが含まれていますが、後でグループのリストを取得すると、最後の1つだけが表示されます。例:
re.search("(\w)*", "abcdefg").groups
()
これはリストを返します( 'g'、)
返す必要があります( 'a'、 'b'、 'c'、 'd'、 'e'、 'f'、 'g'、)
それは可能ですか?どうすればいいですか?
ダグラスリーダーの解決策 に加えて、ここに説明があります:
正規表現では、グループ数は固定されています。グループの後ろに数量詞を配置しても、グループ数は増えません(以前のグループが複数回一致したため、他のすべてのグループインデックスが増えると想像してください)。
数量詞を含むグループは、複雑な部分式を複数回一致させる必要がある場合に、それをアトミックにする方法です。正規表現エンジンには、最後の一致をグループにのみ保存する以外の方法はありません。つまり、単一の「非武装」正規表現で目的を達成する方法はなく、別の方法を見つける必要があります。
re.findall(r"\w","abcdefg")