Python中的正则表达式从右到左解析
有没有办法在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的从右到左选项,结果可能会让人感到意外。)