c#正则表达式替换不在特定UTF-8字符集范围内的所有内容(白名单)

c#正则表达式替换不在特定UTF-8字符集范围内的所有内容(白名单),c#,regex,unicode,utf-8,C#,Regex,Unicode,Utf 8,我尝试只包含此拉丁字符集特定的不可打印字符: 我的正则表达式如下所示: var output = Regex.Replace(input, @"[^\u0020-\u007E]|[^\u00A0-\u00FF]", string.Empty); 具体来说,我对行分隔符(u2028)有一个问题,但我也想排除任何控制字符,所以我想要一个白名单,而不是黑名单 我基本上只想包括u0020(空格)到u007E(波浪线)或u00A0(无中断空格)到u00FF(带分音符的拉丁文小写字母Y) 我的否定式在集合

我尝试只包含此拉丁字符集特定的不可打印字符:

我的正则表达式如下所示:

var output = Regex.Replace(input, @"[^\u0020-\u007E]|[^\u00A0-\u00FF]", string.Empty);
具体来说,我对行分隔符(u2028)有一个问题,但我也想排除任何控制字符,所以我想要一个白名单,而不是黑名单

我基本上只想包括u0020(空格)到u007E(波浪线)或u00A0(无中断空格)到u00FF(带分音符的拉丁文小写字母Y)

我的否定式在集合中有错误,但我不知道如何解决它。有什么想法吗

更新 以下方法似乎有效

var input = "</span><span>
    </span><span>"
var output = Regex.Replace(input, @"[^\u0020-\u007E\u00A0-\u00FF]", string.Empty);
// gives: </span><span>    </span><span>
var输入=”
    "
var output=Regex.Replace(输入,@“[^\u0020-\u007E\u00A0-\u00FF]”,string.Empty);
//给出:

工作示例:

使用
\p{C}
,或
\p{Cc}
。如果上述方法不起作用,请通过添加需要匹配的示例来澄清。请注意,匹配链接到的表中标记为
的所有字符实际上不是问题,您可以将它们添加到字符类中,
[\u0000-\u001F\u007f-\u009F]
.Hi@WiktorStribiżew,这些正是我不想要的字符,但为了安全起见,我只想包括上述集合中的字符。我想我已经找到了。我想它是[^\u0020-\u007E\u00A0-\u00FF]。你为什么这么认为?请发布一个示例字符串和预期的输出。现在,你的问题被问及只有你才能回答。@WiktorStribiżew请参阅更新。它似乎解决了我的问题。