Python正则表达式:重叠模式

时间:2013-12-08 03:59:00

标签: python regex

假设我有一个字符串:

string = 'AvBvC'

我希望匹配ABC,这就是我所做的:

match = re.search('(.*)v(.*)', string)
print match.groups()

问题是,结果表明:

('AvB', 'C',)

而不是我想要的,这是

('A', 'B', 'C',)

如何让它捕捉所有重叠的模式..?

感谢。

(我知道有一些帖子涉及同一个问题,但没有找到Python的明确答案)

2 个答案:

答案 0 :(得分:2)

你的问题有点不清楚,你似乎有比实际节目更复杂的字符串。

仅使用search()匹配第一次匹配,您可以使用findall()来匹配所有匹配项。

matches = re.findall(r'[^v]+', string)
['A', 'B', 'C']

对于您需要拆分的某些字符,另一个选项是split

>>> re.split('v', 'AvBvC')
['A', 'B', 'C']

答案 1 :(得分:2)

使用re.split

>>> import re
>>> re.split('v', 'AvBvC')
['A', 'B', 'C']

并进一步证明......

>>> re.split('vw', 'AAvwBBvwCC')
['AA', 'BB', 'CC']