6
>>> 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']

ありがとうございました!

4

3 に答える 3

6

肯定的な先読みアサーションを使用するとうまくいくはずです。

>>> 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正規表現のすべてのグループを返します - 先読みのグループを含みます。これが機能するのは、先読みアサーションが文字列をまったく消費しないためです。

于 2013-07-04T10:15:53.297 に答える
5

重複一致を許可する代替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']
于 2013-07-04T10:24:35.913 に答える