带有字符串参数的Ruby grep

gka*_*kck 8 ruby regex ruby-1.9

我想使用带字符串的grep作为正则表达式模式.我怎样才能做到这一点?

例:

myArray.grep(/asd/i) #Works perfectly.
Run Code Online (Sandbox Code Playgroud)

但我想先准备好我的发言

searchString = '/asd/i'
myArray.grep(searchString) # Fails
Run Code Online (Sandbox Code Playgroud)

我怎样才能实现这一目标?我需要准备一个字符串,因为这将进入搜索算法,并且查询将在每个请求上发生变化.谢谢.

ste*_*lag 11

正则表达式支持插值,就像字符串一样:

var = "hello"
re = /#{var}/i
p re #=> /hello/i
Run Code Online (Sandbox Code Playgroud)


izo*_*ica 5

引号中的某些内容与该内容本身不同。/a/i是正则表达式,"/a/i"是字符串。要从字符串构造正则表达式,请执行以下操作:

r = Regexp.new str
myArray.grep(r)
Run Code Online (Sandbox Code Playgroud)