ruby 1.9.2的新正则表达式引擎(Oniguruma)是非常慢的吗?

NM.*_*NM. 1 ruby regex ruby-on-rails-3

我最近从rails 2迁移到Rails 3,因此得到了默认情况下在ruby 1.9.2中出现的新正则表达式引擎.

我听说过这个正则表达式引擎有很多好处.但是,我的应用程序的一部分严重依赖于正则表达式变得非常缓慢.
这就是我想要实现的:我需要检查字符串中的某些特定关键字.一旦我点击关键字,我需要修改字符串,根据匹配的关键字添加指向某个网站的链接.一个字符串可能包含多个这样的关键字,我需要检查数千个关键字的字符串.所有这些都需要在几分钟内完成,并且所有内容都与ruby 1.8.7中的逻辑完美配合.

之前它曾经在几秒钟内完成,现在需要几个小时.我今天比较两个同时运行,红宝石1.8.7在2秒内完成,而1.9.2一个花了1.5小时!显然有些不对劲.

我的正则表达式如下:

/.*\b(sometext)\b/i
Run Code Online (Sandbox Code Playgroud)

问题:

  1. 我是否需要以不同的方式使用正则表达式,或者是否有其他技巧可以加速ruby 1.9.2中的匹配过程?
  2. 最坏的情况是,有没有办法使用红宝石1.8.7正则表达式引擎与ruby 1.9.2?

Tim*_*ker 6

你可以完全放弃.*你的正则表达式.它所做的就是匹配整个字符串,然后回溯直到找到你的搜索字符串.删除它,看它是否仍然很慢.