2010-10-17 50 views
3

正常蟒蛇正則表達式匹配,我們使用正則表達式匹配由左到右的方向,我想知道的是有一些交換機可以在python向左向右匹配嗎? 或以任何其他語言有此功能的嵌入式有關從正確的方向

例如

abcd1_abcd2

如果給一個abcd正則表達式,它匹配兩個abcd,我想是把最後的比賽首先在反方向匹配

+0

什麼開關和什麼在*通常*? – 2010-10-17 12:17:32

+5

什麼阻止你扭轉結果列表? – SilentGhost 2010-10-17 12:29:42

+1

通常,您從右到左(至少在.NET中)匹配的原因是出於性能原因,而不是實際向後返回匹配列表。例如,如果你有一個非常複雜的表達式,可能導致大量的回溯,但是你的匹配以一個簡單的字符串'XYZ'結束,那麼解析器將通過向後工作並首先查找XYZ消除大量浪費的處理。 – 2013-07-17 11:09:09

回答

2

可以撤消列表所建議的@ SilentGhost:

import re 

for s in reversed(re.findall('abcd.', 'abcd1_abcd2')): 
    print s 
+0

事實上,我需要使用finditer,但它是一個yield表達式,所以我使用[在finditer(obj)] [:: - ]中進行匹配 – mlzboy 2010-10-17 16:11:35