这是我尝试过的
CSharpClassNameRegex = new Regex(@"\b(\x36|class|\$|function|struct|enum|interface)(?<range>\w+?)\b", RegexCompiledOption);
其中 \x36 和 \$ 代表 '$'
尽管其他关键字会返回匹配项,但它们不会返回匹配项。
The $
符号不是单词字符,并且\b
前面需要一个单词 char。
您可以使用明确的左词边界来修复您的正则表达式,(?<!\w)
:
CSharpClassNameRegex = new Regex(@"(?<!\w)(class|\$|function|struct|enum|interface)(?<range>\w+)", RegexCompiledOption);
注意\w+?\b
可以替换为\w+
安全地,\w+
将贪婪地匹配 1 个或多个单词字符,并且您不必强制将 1 个或多个单词字符与单词边界匹配。
Also, \x36
火柴6
char,所以我怀疑您是否需要将其保留在正则表达式中。
正则表达式详细信息
-
(?<!\w)
- 当前位置的左侧不允许有单词字符
-
(class|\$|function|struct|enum|interface)
- 第 1 组:class
, $
, function
, struct
, enum
, interface
子串
-
(?<range>\w+)
- 命名组“范围”:1 个或多个单词字符。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)