代码之家  ›  专栏  ›  技术社区  ›  Rajagopalan

当我使用正则表达式类时,这个正则表达式不起作用

  •  0
  • Rajagopalan  · 技术社区  · 7 年前

    我已经编写了以下代码

    policy="Policy: SCW000359-18\nAB & A Abcdef"
    p policy[/(?<=Policy:) \w+-\w+/]
    

    它工作得非常完美,它打印出以下结果

    " SCW000359-18"
    

    但我必须将正则表达式作为字符串参数接收,因此我编写了以下代码

    p policy[/#{Regexp.quote("(?<=Policy:) \w+-\w+")}/]
    

    但它的回报是零。有人能帮我吗?

    1 回复  |  直到 7 年前
        1
  •  2
  •   philipp    7 年前

    RegExp.quote 将在regexp中引用元字符,因此将搜索文本字符串: (?<=Policy:) \w+-\w+ ,这显然不在搜索字符串中 Policy: SCW000359-18\nAB & A … .

    在这种情况下,不应引用正则表达式字符串,而应使用:

     Regexp.new('(?<=Policy:) \w+-\w+')
    

    Docs