2010-10-17 54 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