这就是我尝试过的
CSharpClassNameRegex = new Regex(@"\b(\x36|class|\$|function|struct|enum|interface)(?<range>\w+?)\b", RegexCompiledOption);
其中\ x36和\ $代表“ $”
这些关键字未返回匹配项,尽管其他关键字也是如此。
答案 0 :(得分:1)
$
符号不是单词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个或多个单词字符。