C# Regex以排除特定的子字符串模式

C# Regex以排除特定的子字符串模式,c#,regex,C#,Regex,我当前的正则表达式代码如下 var caption = Regex.Replace(fileImage.Caption, @"[^\w\s\(\)\.@-]", "",RegexOptions.None); 这里我用空字符替换特殊字符,不包括某些特殊字符 现在我遇到了一个奇怪的情况,在上面的匹配中,我需要导出一个×类型的子字符串其中215可以是任何数字。它可以是普通的十进制或十六进制。如果是十六进制数,则在&之后以“x”开头 我怎样才能做到这一点呢?你是说这个吗 var caption

我当前的正则表达式代码如下

var caption = Regex.Replace(fileImage.Caption, @"[^\w\s\(\)\.@-]", "",RegexOptions.None);
这里我用空字符替换特殊字符,不包括某些特殊字符
现在我遇到了一个奇怪的情况,在上面的匹配中,我需要导出一个
×类型的子字符串其中
215
可以是任何数字。它可以是普通的十进制或十六进制。如果是十六进制数,则在
&
之后以“x”开头

我怎样才能做到这一点呢?

你是说这个吗

var caption = Regex.Replace(fileImage.Caption, @"(&#x?[a-f\d]+;)|[^\w\s\(\)\.@-]", "$1");

六位小数包括
[a-f]
这更为稳健。我添加了一个'或',因为空格和十六进制的顺序可以是任意顺序:var caption=Regex.Replace(fileImage.caption,@“(?!&#[xX]?[A-Fa-f\d]{1,3})[^\w\s()\.@-]”),它给出的是#215;而不是×;很抱歉,它仍然从×中删除;