我的正则表达式:/\b+#{string}\b+/
其中string ='test - '
我的测试用例:#test-#1
我希望正则表达式匹配test-
。如果我的测试字符串没有以单词边界字符结尾,那么这种方法可以正常工作,但如果确实存在则会中断。
#chars也可以是任何其他字边界字符,所以另一个例子是:
-test--1
我仍然只想匹配test-
反作用示例案例有效:
正则表达式:/\b+#{string}\b+/
其中string ='test'
测试用例:#test#1
答案 0 :(得分:1)
由于\b
含义取决于上下文,因此您需要在正则表达式中使用基于环视的边界。由于您希望在非单词字符或字符串位置的开头/结尾之间匹配您的关键字,您可以使用
/(?<!\w)#{Regexp.escape(string)}(?!\w)/
<强>详情
(?<!\w)
- 搜索字符串#{Regexp.escape(string)}
- 必须对搜索字符串进行转义,以便将所有特殊字符视为文字字符(?!\w)
- 搜索词后面一定不能有字词。