c# - 特殊字符之前的单词边界匹配失败
问题描述
这是我尝试过的
CSharpClassNameRegex = new Regex(@"\b(\x36|class|\$|function|struct|enum|interface)(?<range>\w+?)\b", RegexCompiledOption);
其中 \x36 和 \$ 代表 '$'
尽管其他关键字是,但这些不会返回匹配项。
解决方案
该$
符号不是单词 char,并且\b
在它之前需要一个单词 char。
您可以使用明确的左字边界来修复您的正则表达式,(?<!\w)
:
CSharpClassNameRegex = new Regex(@"(?<!\w)(class|\$|function|struct|enum|interface)(?<range>\w+)", RegexCompiledOption);
请注意,\w+?\b
可以替换为\w+
安全,\w+
将贪婪地匹配 1 个或多个单词字符,并且您不必强制匹配 1 个或多个单词字符与单词边界。
此外,\x36
匹配6
字符,所以我怀疑你需要将它保存在正则表达式中。
正则表达式详细信息
(?<!\w)
- 当前位置左侧不允许有单词 char(class|\$|function|struct|enum|interface)
- 第 1 组:class
,$
,function
,struct
,enum
,interface
子串(?<range>\w+)
- 命名组“范围”:1 个或多个单词字符。
推荐阅读
- android - 在移动数据上,Firemonkey Android 应用程序的 HTTP POSTS 性能突然崩溃
- shell - 为什么涉及长期进程的 $() 中的 grep -m 1 会卡住?
- java - 多参数输入字符串
- ios - 从 UIText 字段的用户输入更改 UIView 框架的高度和宽度
- node.js - Jenkins 中跨多个阶段的相同 NodeJS 版本
- vba - VBA - 将自动过滤应用于所有工作表但在不同的列中
- python - 熊猫,按特定顺序获取元素
- tensorflow - tensorflow 的 DynamicAttentionWrapper 模块问题
- php - 用于比较和检查两个表的 PHP 查询
- vba - VBA复制合并区域