正则表达式将单词与+(加号)符号匹配
我花了一些时间,但还是要解决。 我需要能够在字符串中匹配带有符号的单词(如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