Символ $
не является словом char, а \b
требует слово char перед ним.
Вы можете исправить свое регулярное выражение, используя однозначную левую границу слова, (?<!\w)
:
CSharpClassNameRegex = new Regex(@"(?<!\w)(class|\$|function|struct|enum|interface)(?<range>\w+)", RegexCompiledOption);
Обратите внимание, что \w+?\b
можно безопасно заменить на \w+
, \w+
будет жадно сопоставлять 1 или более символов слова, и вам не нужно принудительно сопоставлять 1 или более символов слова с границей слова.
Кроме того, \x36
соответствует 6
char, поэтому я сомневаюсь, что вам нужно оставить его в регулярном выражении.
Regex details
(?<!\w)
- слева от текущего местоположения нельзя использовать слово char
(class|\$|function|struct|enum|interface)
- Группа 1: class
, $
, function
, struct
, enum
, interface
подстроки
(?<range>\w+)
- Именованная группа «диапазон»: 1 или более слов.