C#正则表达式和美元符号

C#正则表达式和美元符号,c#,regex,hex,C#,Regex,Hex,我创建了一个正则表达式,用于突出显示某些程序集样式的十六进制数,如下所示: $00 $1400 $FFFFFF 有时,他们也会在前面加一个#。因此,我首先创建了这个正则表达式: @"\b(\$)[A-Fa-f\d]+\b" 当我尝试时,它似乎与任何东西都不匹配。但是,如果我将\$替换为0x,它将正常工作,并返回与C风格十六进制数(如0x0F、0xFF等)的匹配 为什么会这样?我花了几个小时试图使这个正则表达式工作,但我就是不能,也不知道为什么。任何帮助都将不胜感激。\b字母数字字符和

我创建了一个正则表达式,用于突出显示某些程序集样式的十六进制数,如下所示:

$00  
$1400  
$FFFFFF
有时,他们也会在前面加一个#。因此,我首先创建了这个正则表达式:

@"\b(\$)[A-Fa-f\d]+\b"
当我尝试时,它似乎与任何东西都不匹配。但是,如果我将\$替换为0x,它将正常工作,并返回与C风格十六进制数(如0x0F、0xFF等)的匹配


为什么会这样?我花了几个小时试图使这个正则表达式工作,但我就是不能,也不知道为什么。任何帮助都将不胜感激。

\b
字母数字字符和非字母数字字符之间的匹配-它在
$
之间、空格或其他字符之间不匹配。您可能想完全放弃它:

@"(\$)[A-Fa-f\d]+\b"
如果不希望模式与前面的字母数字字符匹配,可以在其前面添加
\B
(因此
#$00
a$00
会匹配,但
a$00
不会匹配)。您也可以更加挑剔,只允许某些字符:

@"(?<=[\w$])(\$)[A-Fa-f\d]+\b"

@”(?如果您在开始时删除
\b
,它将正常工作。然后它将成为

@"(\$)[A-Fa-f\d]+\b"

\b
匹配单词字符和非单词字符之间的边界,这里的
$
是一个非单词字符。

问题是单词边界
\b
。它在美元符号之后匹配。例如,这个符号可以工作
@(\$)[a-Fa-f\d]+“

一个额外的提示-
\d
在.net中匹配非ascii数字(如阿拉伯数字),这可能是不需要的。
0-9
在这里可能会更好。你们太棒了,每次我在这里发布问题,我都会在几分钟内得到正确的回答。谢谢你们告诉我一些我不知道的事情。