在单词边界正则表达式中无法匹配字符“#”

时间:2019-09-19 18:56:51

标签: regex mongodb

用正则表达式不能在单词的末尾匹配字符“#”

    /\b(C#)\b/i

我正在处理一些MongoDB查询。搜索的主题是我收藏中给定文本字段上的编程语言。

我正在使用且几乎一直在工作的正则表达式是

   /\b(java|php)\b/i

(对于我正在寻找Java和PHP的具体情况)。

需要单词边界来搜索整个单词(javascript不能与Java匹配)

问题是,如前所述,当我寻找“ C#”时,正则表达式会失败,不会抛出任何结果。

如果我删除了最后一个边界,则正则表达式将起作用,但随后的java / javascript示例失败。

我已经被困在这里几天了,任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

https://stackoverflow.com/a/3241901/2191572

  

单词边界断言该位置是在单词字符之前而不是一个字符之后,还是在单词字符之后而不是一个字符之后。

您需要创建自己的单词边界定义:

uname

https://regex101.com/r/LoOADH/1


注意:如果由于最近的编程热潮而需要匹配\b(java|php|c#)(?=[^a-z0-9_]|$) 之类的东西,那么您还必须用前行替换开头的#b并启动字符串断言\b,因此它看起来像:

^