string = 1985-02-07
以下成功:
reg1 = /([0-9A-Za-Z]{4})/
string.scan(reg)
从文件读取正则表达式后,在变量中保存的为字符串,也就是 reg2的格式, 在用该变量匹配的时候失败.
以下失败:
reg2 = '/([0-9A-Za-Z]{4})/'
string.scan(reg)
请问:如何将 reg2 转换成 reg1
string = 1985-02-07
reg1 = /([0-9A-Za-Z]{4})/
string.scan(reg)
reg2 = '/([0-9A-Za-Z]{4})/'
string.scan(reg)
请问:如何将 reg2 转换成 reg1
[code="ruby"]str = '1985-02-07'
reg1 = /([0-9A-Za-z]{4})/
str.scan(reg1) #=> [["1985"]]
reg2 = '/([0-9A-Za-z]{4})/'
str.scan(reg2) #=> []
reg3 = Regexp.new reg2[1..-2]
str.scan(reg3) #=> [["1985"]]
reg4 = eval reg2
str.scan(reg4) #=> [["1985"]][/code]
可以用Regexp.new,这样的话就要记得把reg2头尾的斜杠去掉。另外,如果正则表达式里有转义字符也要注意。
也可以用eval方法,让Ruby解释器自己去想办法把字符串形式的源码解释出来。