正则表达式,允许#和+号

时间:2018-12-03 20:02:23

标签: c# regex

我在我的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");

但上述方法似乎都不起作用。

有人能指出我正确的方向吗?

谢谢。

1 个答案:

答案 0 :(得分:1)

您的正则表达式几乎可以用,但是您不能在正则表达式的末尾加上\b,因为+#字符不是单词字符的一部分,并且它们的外观已经破坏了字边界。因此,可以有条件地应用边界,并且您正确的正则表达式应变为

\b[\w+#]*(?:\b|(?<=[+#]))

将成功匹配的

c
c++
c#
Java
Python++

但是它与++ c不匹配,我认为您不想匹配,这就是为什么我没有从正则表达式的开头删除\b

如果您想匹配++c,则您的正则表达式将变为

[\w+#]*(?:\b|(?<=[+#]))

Demo