使用正则表达式替换特定控制字符,除了一些特殊情况下的C#?

4

我有以下要求:

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

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

上述代码将所有控制字符替换为\r\n。
然而,我想做与上面相同的事情,但是排除以下控制字符:
SPACE , `\u000D`, `\u000A`

我该如何修改上面的正则表达式来实现这个目标?有什么想法吗?谢谢!
2个回答

4
使用字符类减法技术:

(了解更多)

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

[\p{C}-[ \u000D\u000A]]+模式匹配来自\p{C} Unicode类别的一个或多个字符,除了空格、\u000D\u000A


1
我来了:

这是代码:[^\P{C}\r\n]+

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

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

(顺便说一句:空格不匹配 \p{C}


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接