通常当我的正则表达式模式如下所示:
http://www.microsoft.com/
Run Code Online (Sandbox Code Playgroud)
然后我必须像这样逃避它:
string.match(/http:\/\/www\.microsoft\.com\//)
Run Code Online (Sandbox Code Playgroud)
有没有其他方式而不是像那样逃避它?
我希望能够像http://www.microsoft.com一样使用它,因为我不想逃避所有模式中的所有特殊字符.
Mat*_*hen 65
Regexp.new(Regexp.quote('http://www.microsoft.com/'))
Run Code Online (Sandbox Code Playgroud)
Regexp.quote只是逃避任何具有特殊正则表达式含义的字符; 它需要并返回一个字符串.请注意,这.也很特别.引用之后,您可以在传递给构造函数之前根据需要附加到regexp.一个简单的例子:
Regexp.new(Regexp.quote('http://www.microsoft.com/') + '(.*)')
Run Code Online (Sandbox Code Playgroud)
这会为路径的其余部分添加捕获组.
小智 9
通过使用%r并在正则表达式之前定义一个字符,您还可以在Ruby中使用任意分隔符作为正则表达式,例如:
%r!http://www.microsoft.com/!
Run Code Online (Sandbox Code Playgroud)
Regexp.quote或者Regexp.escape可以用来为你自动逃脱:
http://ruby-doc.org/core/classes/Regexp.html#M001195
结果可以传递给Regexp.new创建一个Regexp对象,然后你可以调用该对象的.match方法并传递它匹配的字符串(相反的顺序string.match(/regex/)).
| 归档时间: |
|
| 查看次数: |
17618 次 |
| 最近记录: |