我需要在C#中的正则表达式中匹配$,但无法弄清楚

时间:2019-03-17 17:52:25

标签: c# regex

这就是我尝试过的

CSharpClassNameRegex = new Regex(@"\b(\x36|class|\$|function|struct|enum|interface)(?<range>\w+?)\b", RegexCompiledOption);

其中\ x36和\ $代表“ $”

这些关键字未返回匹配项,尽管其他关键字也是如此。

1 个答案:

答案 0 :(得分:1)

$符号不是单词char,\b之前需要单词char。

您可以使用明确的左词边界(?<!\w)来修复正则表达式:

CSharpClassNameRegex = new Regex(@"(?<!\w)(class|\$|function|struct|enum|interface)(?<range>\w+)", RegexCompiledOption);

请注意,\w+?\b可以安全地替换为\w+\w+将贪婪地匹配1个或多个单词字符,并且您不必强制将1个或多个单词字符与一个单词匹配边界。

此外,\x366字符匹配,因此我怀疑您需要将其保留在正则表达式中。

正则表达式详细信息

  • (?<!\w)-当前位置的左侧不允许有字符char
  • (class|\$|function|struct|enum|interface)-第1组:class$functionstructenuminterface子字符串
  • (?<range>\w+)-命名组“范围”:1个或多个单词字符。