Я пишу свою собственную грамматику для редактора Atom.Он использует регулярные выражения для определения кода, который должен быть выделен.
Я хочу выделить шестнадцатеричные числа в двух форматах:
$affe // hex number with ampersand
0xeffa // hex number with 0x
Итак, я придумал это регулярное выражение:
(\$|0x)[A-Fa-f0-9]+
Довольно просто, все отлично работает.Проблема в том, что это также выделит что-то вроде 0x0
в t0x0t
.Поэтому я изменил свое регулярное выражение на
\b(\$|0x)[A-Fa-f0-9]+\b
Теперь это регулярное выражение будет соответствовать только 0xeffa
, но не $affe
, или любому другому номеру с префиксом $ - почему это так?Я нашел этот ответ , который, кажется, похожая проблема.Я предполагаю, что это потому, что $
не является словом.Есть ли способ изменить это регулярное выражение, чтобы оно соответствовало 0xeffa
и $affe
, но не 0x0
в t0x0t
?
Одно из решений, которое я попытался, - просто написать два отдельных выражения регулярного выражения для каждогоcase - это работает, но, похоже, что-то побеждает цель выражений регулярных выражений.