Here\'s what I\'ve tried
CSharpClassNameRegex = new Regex(@\"\\b(\\x36|class|\\$|function|struct|enum|interface)(?\\w+?)\\b\", RegexCompiledOption);
The $
symbol is not a word char, and \b
requires a word char before it.
You may fix your regex using an unambiguous left word boundary, (?<!\w)
:
CSharpClassNameRegex = new Regex(@"(?<!\w)(class|\$|function|struct|enum|interface)(?<range>\w+)", RegexCompiledOption);
Note that \w+?\b
can be replaced with \w+
safely, \w+
will greedily match 1 or more word chars and you do not have to enforce matching 1 or more word chars with a word boundary.
Also, \x36
matches 6
char, so I doubt you need to keep it in the regex.
Regex details
(?<!\w)
- no word char is allowed immediately to the left of the current location(class|\$|function|struct|enum|interface)
- Group 1: class
, $
, function
, struct
, enum
, interface
substrings(?<range>\w+)
- Named group "range": 1 or more word chars.