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
在这里可能会更好。你们太棒了,每次我在这里发布问题,我都会在几分钟内得到正确的回答。谢谢你们告诉我一些我不知道的事情。