我写了以下代码
policy="Policy: SCW000359-18\nAB & A Abcdef"
p policy[/(?<=Policy:) \w+-\w+/]
效果如此完美,它会打印以下结果
" SCW000359-18"
但是我必须将正则表达式作为字符串参数接收,因此我编写了以下代码
p policy[/#{Regexp.quote("(?<=Policy:) \w+-\w+")}/]
但是它返回nil。谁能帮我吗?
答案 0 :(得分:2)
RegExp.quote
将在正则表达式中引用元字符,因此它将搜索文字字符串:(?<=Policy:) \w+-\w+
,显然它不在您的搜索字符串Policy: SCW000359-18\nAB & A …
中。
在这种情况下,您不应引用正则表达式字符串,而应使用:
Regexp.new('(?<=Policy:) \w+-\w+')