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

时间:2017-04-07 16:41:15

标签: c# regex unicode utf-8

我正在尝试仅包含特定于此拉丁字符集的不可打印字符:http://www.utf8-chartable.de/unicode-utf8-table.pl?utf8=0x

我的正则表达式如下:

var output = Regex.Replace(input, @"[^\u0020-\u007E]|[^\u00A0-\u00FF]", string.Empty);

我特别关注LINE SEPARATOR'(u2028),但我想排除任何控制角色,所以我想要一个白名单,而不是黑名单。

我基本上只想将u0020(SPACE)包括到u007E(TILDE)或u00A0(NO-BREAK SPACE)到u00FF(带有DIAERESIS的LATIN SMALL LETTER)。

我在集合上的否定是错误的,但我无法弄清楚如何解决它。有什么想法吗?

更新

以下似乎有效

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

工作示例:http://rextester.com/YCIWTN86420

0 个答案:

没有答案