C# 特殊字符匹配失败前的单词边界
这是我试过的C# 特殊字符匹配失败前的单词边界,c#,regex,C#,Regex,这是我试过的 CSharpClassNameRegex = new Regex(@"\b(\x36|class|\$|function|struct|enum|interface)(?<range>\w+?)\b", RegexCompiledOption); CSharpClassNameRegex=new Regex(@“\b(\x36 | class | \$| function | struct | enum | interface)(?\w+)\b”,RegexCompi
CSharpClassNameRegex = new Regex(@"\b(\x36|class|\$|function|struct|enum|interface)(?<range>\w+?)\b", RegexCompiledOption);
CSharpClassNameRegex=new Regex(@“\b(\x36 | class | \$| function | struct | enum | interface)(?\w+)\b”,RegexCompiledOption);
其中\x36和\$表示“$”
这些不会返回匹配项,尽管其他关键字是。符号
$
不是单词字符,\b
要求在其前面有单词字符
您可以使用明确的左单词边界,(?)修复正则表达式:
CSharpClassNameRegex=新的正则表达式(@“(?\w+”),RegexCompiledOption);
请注意,\w+?\b
可以安全地替换为\w+
,\w+
将贪婪地匹配一个或多个单词字符,您不必强制将一个或多个单词字符与单词边界匹配
而且,\x36
匹配6
char,因此我怀疑您是否需要将其保留在正则表达式中
正则表达式详细信息
(?-当前位置左侧不允许立即出现单词字符
(类|\$函数|结构|枚举|接口)
-第1组:类
,$
,函数
,结构
,枚举
,接口
子字符串
(?\w+)
-命名组“范围”:1个或多个单词字符
这就是我需要的!
CSharpClassNameRegex = new Regex(@"(?<!\w)(class|\$|function|struct|enum|interface)(?<range>\w+)", RegexCompiledOption);