当前位置:  开发笔记 > 编程语言 > 正文

将字符串插入正则表达式

如何解决《将字符串插入正则表达式》经验,为你挑选了4个好方法。

我需要将字符串的值替换为Ruby中的正则表达式.是否有捷径可寻?例如:

foo = "0.0.0.0"
goo = "here is some other stuff 0.0.0.0" 
if goo =~ /value of foo here dynamically/
  puts "success!"
end

Jonathan Lon.. 262

与字符串插入相同.

if goo =~ /#{Regexp.quote(foo)}/
#...


glenn mcdona.. 117

需要注意的是,Regexp.quote在乔恩L.的回答是很重要的!

if goo =~ /#{Regexp.quote(foo)}/

如果你只是做"显而易见"的版本:

if goo =~ /#{foo}/

然后匹配文本中的句点被视为正则表达式通配符,"0.0.0.0"并将匹配"0a0b0c0".

另请注意,如果您真的只想检查子字符串匹配,那么您可以这样做

if goo.include?(foo)

这不需要额外的引用或担心特殊字符.



1> Jonathan Lon..:

与字符串插入相同.

if goo =~ /#{Regexp.quote(foo)}/
#...



2> glenn mcdona..:

需要注意的是,Regexp.quote在乔恩L.的回答是很重要的!

if goo =~ /#{Regexp.quote(foo)}/

如果你只是做"显而易见"的版本:

if goo =~ /#{foo}/

然后匹配文本中的句点被视为正则表达式通配符,"0.0.0.0"并将匹配"0a0b0c0".

另请注意,如果您真的只想检查子字符串匹配,那么您可以这样做

if goo.include?(foo)

这不需要额外的引用或担心特殊字符.


请注意,如果您要使用字符串构造正则表达式,则反向(不使用`.quote()`)也很有用.

3> JasonTrue..:

可能Regexp.escape(foo)是一个起点,但有一个很好的理由你不能使用更传统的表达式插值:"my stuff #{mysubstitutionvariable}"

此外,您可以使用!goo.match(foo).nil?文字字符串.



4> Markus Jarde..:
Regexp.compile(Regexp.escape(foo))

推荐阅读
臭小子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有