正则表达式使Ruby完全冻结

时间:2014-06-12 11:13:51

标签: ruby-on-rails ruby regex freeze

所以我偶然发现了这个问题,当我尝试将特定数据与Ruby中的某些正则表达式匹配时(这适用于Rails服务器和Rails控制台甚至简单的IRB),它只是完全冻结了几分钟,没有任何反应

所以这是正则表达式:

^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$

这是我试图与此正则表达式匹配的数据。

http://sub.domain.com/folder_1/?getparam=true

例如,使用匹配方法,如下所示:

"http://sub.domain.com/folder_1/?getparam=true".match(/^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/)

最终,大约2分钟后,它会返回结果,但我的意思是2分钟,对于正则表达式,对我来说似乎并不那么难。

如果我从字符串中删除?getparam = true,它就完全匹配。

此问题在Rails控制台,IRB控制台和Rails服务器中重现。

我正在运行

ruby 1.9.3p484 (2013-11-22 revision 43786) [x86_64-linux]
Rails 3.2.8

真的是关于正则表达式吗?

1 个答案:

答案 0 :(得分:3)

是的,it is about the regex

Imgur

试试这个正则表达式:

^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)\/?$