我正在为Atom编辑器编写自己的语法。它使用正则表达式来识别应该突出显示的代码。
我想以两种格式突出显示十六进制数字:
SelectedIndexChanged
所以我提出了这个正则表达式:
$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
,或者前缀为$的任何其他数字 - 为什么会这样?我发现this answer似乎是一个类似的问题。我认为这是因为$affe
是一个非单词字符。有没有办法修改此正则表达式,使其与$
中的0xeffa
和$affe
匹配但不匹配0x0
?
我尝试过的一个解决方案就是为每个案例简单地写两个单独的正则表达式 - 它可以工作,但它似乎打败了正则表达式的目的。
答案 0 :(得分:1)
您应该更改\b
适用的位置:
(\$|\b0x)[A-Fa-f0-9]+\b
否则,\b
引擎前面的$
预计[a-zA-Z0-9_]
之前会出现$
集中的字词,即a$af00