Python中的正则表达式从右到左解析

5 投票
1 回答
6199 浏览
提问于 2025-04-18 15:42

有没有办法在Python中从右到左解析正则表达式?

我有几个很大的正则表达式,处理我的输入大约需要一秒钟,总的运行时间可能要几分钟。所以我尝试测试一下我的正则表达式的性能,发现regexhero有一个选项可以从右到左解析正则表达式,这样执行速度快了大约一百万倍,因为失败的速度更快。

1 个回答

12

是的,方法就是把字符串反转过来(然后根据新的字符串来写模式):

字符串:

'John likes to eat mushrooms'[::-1] 

模式(像John这样的?):

r'^(.+) sekil nohJ$'

你也可以把re模块换成regex模块,它提供了一个反向搜索的标志(?r)

>>> import regex
>>> regex.findall(r'(?r)\w+(?=\W+\w*e)', 'John likes to eat mushrooms')
['to', 'John']

(要注意这个功能,因为.net的从右到左选项,结果可能会让人感到意外。)

撰写回答