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请参阅更新。它似乎解决了我的问题。