从右边开始正则表达式匹配

5

通常情况下,我们使用正则表达式从左到右进行匹配。我想知道是否有某种开关可以在 Python 中用于从右到左进行匹配?或者这个功能是嵌入在其他语言中的吗?

例如:

abcd1_abcd2

如果给定正则表达式abcd,它将匹配两个abcd字符串。我想要的是把最后一次匹配放在前面,这样可以实现反向匹配。

开关是什么,通常情况下是什么? - Jungle Hunter
6
什么阻止你反转结果列表? - SilentGhost
1
通常情况下,你从右到左匹配(至少在.NET中)的原因是出于性能考虑,而不是实际上返回一个反向匹配列表。例如,如果你有一个非常复杂的表达式,可能会导致大量回溯,但是你的匹配结果以一个简单的字符串“XYZ”结尾,那么解析器将通过向后工作并首先查找XYZ来消除许多浪费的处理。 - Simon_Weaver
1个回答

3
您可以按照 @SilentGhost 的建议反转列表:
import re

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

实际上我需要使用finditer,但它是一个yield表达式,所以我使用[for match in finditer(obj)][::-]代替。 - mlzboy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接