正则表达式替换特殊控制字符除了少数特殊情况C#?

时间:2018-01-03 21:41:14

标签: c# regex

我有以下要求:

我有一个字符串str,它有控制字符...我想用一些特定的值替换这些控制字符。所以我使用以下正则表达式:

str = Regex.Replace(str, @"\p{C}+","\r\n");

以上用\ r \ n替换所有控制字符。

但是,我想在上面做同样的事情但排除以下控制字符:

SPACE , `\u000D`, `\u000A`

如何修改上面的RegEx来完成此任务? 有任何想法吗?谢谢!

2 个答案:

答案 0 :(得分:4)

使用character class subtraction

str = Regex.Replace(str, @"[\p{C}-[ \u000D\u000A]]+","\r\n");
                           ^^^^^^^^^^^^^^^^^^^^^^^

[\p{C}-[ \u000D\u000A]]+模式匹配\p{C} Unicode类中的一个或多个字符,但空格\u000D\u000A

答案 1 :(得分:1)

在这里:[^\P{C}\r\n]+

否定级[^
负属性\P{C}(负类+负属性= \p{C}
回车\r
换行\n

结果:除CRLF外的所有控制代码。

(顺便说一句:SPACE与\p{C}不匹配)

相关问题