【问题标题】:Regex right-to-left parsing in PythonPython中的正则表达式从右到左解析
【发布时间】:2014-08-01 23:29:25
【问题描述】:

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

我有几个巨大的正则表达式,在我的输入上运行大约需要一秒钟,总运行时间为几分钟。所以我尝试测试我的正则表达式的性能,regexhero 可以选择从右到左解析正则表达式,由于更快的失败,这导致执行速度提高了大约一百万倍。

【问题讨论】:

标签: python regex


【解决方案1】:

是的,方法是把字符串倒过来(按照新的字符串写模式):

字符串:

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

模式(像约翰?):

r'^(.+) sekil nohJ$'

您还可以将 re 模块更改为提供反向搜索标志(?r)regex module

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

(注意此功能,作为 .net RightToLeft 选项,结果可能违反直觉。)

【讨论】:

  • 所以我必须重写我所有的正则表达式?听起来不太好。
  • @mbomb007:不,你不能那样做。 $John likes )+.(^
  • 对,我总是忘记括号。
  • 为什么,python 正则表达式没有从右到左搜索?它会影响性能。
  • @keramat: AFAIK,只有这个模块和 .net 语言的正则表达式有这个功能。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-23
  • 2011-06-05
  • 2012-09-12
  • 2015-04-29
  • 1970-01-01
  • 2020-04-13
相关资源
最近更新 更多