我正在研究两个案例:
假设我有那些var:
a = "hello"
b = "hello-SP"
c = "not_hello"
任何部分匹配
我想接受内部包含变量a
的任何字符串,因此b
和c
会匹配。
图案匹配
我希望匹配一个内嵌a
的字符串,然后匹配'-'
,以便b
匹配,c
不匹配。
我遇到问题,因为我总是使用语法/expression/
来定义Regexp,那么如何在Ruby上动态定义RegExp?
答案 0 :(得分:6)
您可以使用相同的语法在正则表达式中使用变量,因此:
reg1 = /#{a}/
将匹配包含a
变量值的任何内容(在创建表达式时!)和
reg2 = /#{a}-/
会做同样的事情,加上一个连字符,所以在你的例子中hello-
。
编辑正如Wayne Conrad指出的那样,如果a
包含“任何在正则表达式中具有特殊含义的字符”,则需要将它们转义。例如:
a = ".com"
b = Regexp.new(Regexp.escape(a))
"blah.com" =~ b
答案 1 :(得分:0)
迟到发表评论,但我找不到我要找的东西。上面提到的答案对我没有帮助。希望它可以帮助那些想要快速修复的红宝石新手。
Ruby代码:
st = "BJ's Restaurant & Brewery"
#take the string you want to match into a variable
m = (/BJ\'s/i).match(string) #(/"your regular expression"/.match(string))
# m has the match #<MatchData "BJ's">
m.to_s
# this will display the match
=> "BJ's"