我在我的C#代码中使用了以下内容
MatchCollection matches = Regex.Matches(input, @"\b[\w]*\b");
我需要启用正则表达式以允许#或+字符,因为它正试图在输入字符串中查找编程语言。因此,C#或C ++被忽略了。
我尝试过
MatchCollection matches = Regex.Matches(input, @"\b[\w+\$\#\+']*\b");
MatchCollection matches = Regex.Matches(input, @"\b[a-zA-Z0-9@#$%&*+\-]*\b");
MatchCollection matches = Regex.Matches(input, @"\b[a-zA-Z0-9\#\+]*\b");
但上述方法似乎都不起作用。
有人能指出我正确的方向吗?
谢谢。
答案 0 :(得分:1)
您的正则表达式几乎可以用,但是您不能在正则表达式的末尾加上\b
,因为+
和#
字符不是单词字符的一部分,并且它们的外观已经破坏了字边界。因此,可以有条件地应用边界,并且您正确的正则表达式应变为
\b[\w+#]*(?:\b|(?<=[+#]))
将成功匹配的
c
c++
c#
Java
Python++
但是它与++ c不匹配,我认为您不想匹配,这就是为什么我没有从正则表达式的开头删除\b
。
如果您想匹配++c
,则您的正则表达式将变为
[\w+#]*(?:\b|(?<=[+#]))