>>> match = re.findall('a.*?a', 'a 1 a 2 a 3 a 4 a')
>>> match
['a 1 a', 'a 3 a']
印刷するにはどうすればよいですか
['a 1 a', 'a 2 a', 'a 3 a', 'a 4 a']
ありがとうございました!
肯定的な先読みアサーションを使用するとうまくいくはずです。
>>> re.findall('(?=(a.*?a))', 'a 1 a 2 a 3 a 4 a')
['a 1 a', 'a 2 a', 'a 3 a', 'a 4 a']
re.findall
正規表現のすべてのグループを返します - 先読みのグループを含みます。これが機能するのは、先読みアサーションが文字列をまったく消費しないためです。
重複一致を許可する代替regex
モジュールを使用できます。
>>> regex.findall('a.*?a', 'a 1 a 2 a 3 a 4 a', overlapped = True)
['a 1 a', 'a 2 a', 'a 3 a', 'a 4 a']