2014-02-09 140 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()開始搜索。