2024-04-25 18:02:53 发布
网友
我已经花了一些时间,但仍然需要解决。我需要一个正则表达式,它能够将一个单词与字符串中的符号(如c++)匹配起来。
我用过/\bword\b/,对于“普通”的词,它工作正常。但只要我一试/\bC\+\+\b/它就不起作用。上面加了个加号有点不对劲。
/\bword\b/
/\bC\+\+\b/
我需要一个regex来检测输入字符串是否包含c++单词。像这样的输入
"c++ developer" "using c++ language"
等等
ps.使用C#,.Net Regex.Match函数。
谢谢你的帮助!
+是一个特殊字符,因此需要对其进行转义
+
\bC\+\+(?!\w)
注意,我们不能使用\b,因为+不是单词字符。
\b
加号有特殊的含义,所以必须用\来转义。同样的规则也适用于这些字符:\, *, +, ?, |, {, [, (,), ^, $,., #,和空白
\
\, *, +, ?, |, {, [, (,), ^, $,., #,
更新:问题出在\b序列上
问题不在于加号字符,而是在于\b序列。它表示一个单词边界,它是一个单词字符(字母数字)和其他字符之间的一个点。Plus不是单词字符,因此要匹配\b,需要在最后一个加号之后直接有单词字符。
^ {CD3>}匹配“测试C++测试”,但不匹配“测试C++测试”。如果你希望在最后一个加号后面有一个空白,可以尝试类似\bC\+\+\s的方法。
\bC\+\+\s
+
是一个特殊字符,因此需要对其进行转义注意,我们不能使用
\b
,因为+
不是单词字符。加号有特殊的含义,所以必须用
\
来转义。同样的规则也适用于这些字符:\, *, +, ?, |, {, [, (,), ^, $,., #,
和空白更新:问题出在
\b
序列上问题不在于加号字符,而是在于
\b
序列。它表示一个单词边界,它是一个单词字符(字母数字)和其他字符之间的一个点。Plus不是单词字符,因此要匹配\b
,需要在最后一个加号之后直接有单词字符。^ {CD3>}匹配“测试C++测试”,但不匹配“测试C++测试”。如果你希望在最后一个加号后面有一个空白,可以尝试类似
\bC\+\+\s
的方法。相关问题 更多 >
编程相关推荐