首页 > 解决方案 > 允许 # 和 + 符号的正则表达式

问题描述

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

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

谁能指出我正确的方向?

提前致谢。

标签: c#regex

解决方案


你的正则表达式几乎没问题,但你不能\b在正则表达式的末尾+加上#字符不是单词字符的一部分,它们的出现已经打破了单词边界。所以边界可以有条件地应用,你正确的正则表达式应该变成这个,

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

哪个会成功匹配,

c
c++
c#
Java
Python++

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

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

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

演示


推荐阅读