iteye_739 2009-09-04 00:45
浏览 316
已采纳

Ruby中如何将字符串转换成可匹配的正则表达式。

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

  • 写回答

1条回答 默认 最新

  • rednaxelafx 2009-09-04 03:54
    关注

    [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解释器自己去想办法把字符串形式的源码解释出来。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器