2014-02-09 95 views
0

是否可以构造一个匹配模式多次的正则表达式?多次匹配正则表达式

例如,在fff中搜索ff会给出两个匹配项。他们的起始位置分别为0和1。

+0

你是对的泽维尔。谢谢。 –

回答

2

是的,这是可能的。您可以使用positive lookahead

>>> import re 
>>> [m.start() for m in re.finditer(r'f(?=f)', 'fff')] 
[0, 1] 
+0

函数'finditer'只返回非重叠实例。 “返回一个产生MatchObject实例遍历字符串中RE模式的所有非重叠匹配的迭代器”see http://docs.python.org/2/library/re.html – 2014-02-09 18:07:17

+0

@Desolator你读过['re .findall'](http://docs.python.org/2/library/re.html#re.findall)你在答案中使用? –

+0

缺点是'm.groups()'不再非常有用 – nodakai

0

是的。使用findall(string[, pos[, endpos]])

到的findAll()函数,使用编译的模式类似,但也 接受可选POS和endpos参数限制搜索 区域像匹配()。

即每次您将从之前的比赛+ 1m.start()开始搜索。