c# - 允许 # 和 + 符号的正则表达式
问题描述
我在我的 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");
但上述方法似乎都不起作用。
谁能指出我正确的方向?
提前致谢。
解决方案
你的正则表达式几乎没问题,但你不能\b
在正则表达式的末尾+
加上#
字符不是单词字符的一部分,它们的出现已经打破了单词边界。所以边界可以有条件地应用,你正确的正则表达式应该变成这个,
\b[\w+#]*(?:\b|(?<=[+#]))
哪个会成功匹配,
c
c++
c#
Java
Python++
但它不会匹配 ++c 我不认为你想匹配这就是为什么我没有\b
从正则表达式的开头删除。
如果您想匹配++c
,那么您的正则表达式将变为,
[\w+#]*(?:\b|(?<=[+#]))
推荐阅读
- reactjs - Reactstrap - 图像右侧的轮播标题
- node.js - AWS Lightsail 和 EC2 G3 是否兼容导出图像?
- c++ - 可以使用 std::copy 将 3D 数组复制到向量。
- python - 如何计算标签/工具提示的聚合聚合?
- regex - 删除部分 URL 并重定向到网站的特定页面
- sabre - Sabre预订中的国际/国内航班指示
- ios - 以编程方式设置 UITableView 行选择返回 nil
- android - 来自资产、原始文件等的 RandomAccessFile。文件夹文件
- r - 尝试进行预测时未找到数据错误
- html - 是什么导致这个小弹出窗口在使用滚动条时移出其容器?