我有以下要求:
我有一个字符串str,它有控制字符...我想用一些特定的值替换这些控制字符。所以我使用以下正则表达式:
str = Regex.Replace(str, @"\p{C}+","\r\n");
以上用\ r \ n替换所有控制字符。
但是,我想在上面做同样的事情但排除以下控制字符:
SPACE , `\u000D`, `\u000A`
如何修改上面的RegEx来完成此任务? 有任何想法吗?谢谢!
答案 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}
不匹配)