Regexp与单词边界结合

时间:2016-10-25 11:41:51

标签: ruby regex word-boundary

我有一个模式列表,我想匹配这些模式的字符串,但我只需要匹配整个单词,所以我一直在寻找一种方法来动态地将字边界插入到Regexp.union方法中,但我遗漏了一些东西。 这是我试过的

test_string = "lonewolf is lonely"
pattern_list = ["lonely", "wolf", "jungle"]
pattern_list.collect! { |pattern| pattern = "\b" + pattern + "\b"}
patterncollection = Regexp.union(pattern_list)
puts patterncollection
puts test_string.scan(patterncollection)

结果为空,如果我打印模式集合,我会看到“\ b”没有正确转义。 我不能直接在数组中插入“\ b”,因为该列表是动态检索的。 我尝试了多个选项,但仍然没有运气。 我们欢迎采用不同的方法处理这个问题。

1 个答案:

答案 0 :(得分:2)

最简单的解决方案是将字边界匹配器移到联盟之外:

{{1}}

请参阅下面的重要评论。基本上,它建议“使用来源,除非你绝对肯定,你知道会发生什么。 - 天人“。

我相应地更新了答案。