如何最大正则表达式非贪心工作倒退
问题描述:
我总是认为正则表达式是这样工作的,但我想我从来没有像现在这样打这样的情况,我不知道解决这个问题的最好方法。如何最大正则表达式非贪心工作倒退
字符串来考虑:
apple
apple
apple
cat
我想使用类似苹果*猫,然而,这第一个苹果匹配给猫当我真正想要的最后一个苹果和猫。?。
请记住这只是一个例子,我在寻找一个通用的方法来做到这一点(即告诉我,只是与苹果和猫之间有一个换行符不会在我的现实情况下工作)
答
您可以在Python中使用基于正则表达式tempered greedy token这种负前瞻:
reg = re.compile(r'apple(?:(?!apple).)*cat', re.DOTALL)
(?:(?!apple).)*
将0以上不在下一个POS有apple
任何字符匹配从而确保我们的比赛中没有apple
。请注意,对于比赛中的每个角色都会声明负向预测。
你应该编辑这个更像你真正的问题。 –
这与贪婪无关。请记住,正则表达式引擎从左到右搜索字符串,并返回最左边位置的第一个结果。 –
看看这个问题:http://stackoverflow.com/questions/406230/regular-expression-to-match-line-that-doesnt-contain-a-word –