C#正则表达式用于汇编样式十六进制数

时间:2011-10-22 03:50:37

标签: c# regex assembly numbers hex

我是regex的新手,我想在Assembly风格中突出显示十六进制数字。像这样:

$ 00
$ FF
$ 1234
($ 00)
($ 00 X)
甚至以#。

开头的十六进制数字

到目前为止,我写了“$ [A-Fa-f0-9] +”,看它是否突出显示以$开头的数字,但事实并非如此。为什么?有人可以帮助我做我正在做的事情吗?感谢。

2 个答案:

答案 0 :(得分:4)

在$之前放一个反斜杠,你的正则表达式会像这样工作

\$[A-Fa-f0-9]+

$是与字符串结尾匹配的有效正则表达式字符。因此,如果您的模式包含美元,那么您需要逃避它。有关详细信息,请参阅regex reference

答案 1 :(得分:1)

这应该涵盖所有这些情况,包括你获得#而不是$

的情况
public Regex MyRegex = new Regex(
          "^(\\()?[\\$#][0-9a-fA-F]+(,x)?(?(1)\\))[\\s]*$",
        RegexOptions.Singleline
        | RegexOptions.Compiled
        );

单行的未转义序列:^(\()?[\$#][0-9a-fA-F]+(,x)?(?(1)\))[\s]*$

这应该在每线匹配上验证。

顺便说一句,我使用Expresso

很快就制作了这个正则表达式