正则表达式将单词与+(加号)符号匹配

我花了一些时间,但还是要解决。 我需要能够在字符串中匹配带有符号的单词(如c ++)的正则表达式。

我使用了/\bword\b/ ,对于“通常”的单词,它工作正常。 但是一旦我尝试/\bC\+\+\b/它只是不起作用。 它有些与加号的错误有关。

我需要一个正则表达式来检测输入字符串是否包含c ++单词。 输入像,

 "c++ developer" "using c++ language" 

等等

PS。 使用C#,。Net Regex.Match函数。

感谢帮助!

+是一个特殊的角色,所以你需要逃避它

 \bC\+\+(?!\w) 

请注意,我们不能使用\b因为+不是单词字符。

问题不在于加号字符,即你已正确转义,而是\b序列。 它表示单词边界,它是单词字符(字母数字)和其他内容之间的点。 Plus不是单词字符,因此要匹配\b ,需要在最后一个加号后面直接输入单词字符。

\bC\+\+\b匹配“Test C ++ Test”但不匹配“Test C ++ Test”。 如果您希望在最后一个加号后面有空格,请尝试类似\bC\+\+\s

加号具有特殊含义,因此你必须用\来逃避它。 同样的规则适用于这些字符: \, *, +, ?, |, {, [, (,), ^, $,., #,和白色空格

更新:问题是\b序列

正如其他人所说,你的问题不是你已经正确转义的+符号,而是\b这是一个零长度的字符,它匹配在word \w和非word \W char之间发生的字边界。

您的正则表达式中还有另一个错误,您希望将char C (大写)与c++ (小写)匹配。为此,您必须将正则表达式更改为/\bc\+\+/或使用i修饰符来匹配大小写不敏感: /\bc\+\+/i