C#Regex - 删除额外的空格但保留新行

时间:2014-09-21 00:02:41

标签: c# regex newline whitespace

我正在使用这个正则表达式:

Regex.Replace(value.Trim(), @"\s+", " ");

修剪并将额外空间减少到一个空间 问题是它还从文本中删除新行

如何修复正则表达式以保持新行?

2 个答案:

答案 0 :(得分:15)

在空白类中排除CRLF的[^\S\r\n]+ [^]是一个负面的类。 \S是一个否定类,等于 [ space, tab, ff, lf, cr ]

关于否定类的事情是它从小组中分解出来并适用于每个成员
在小组中分开。和数学两个负相等的积极。

Not not whitespace = [^\S] = [\s]

但是,否定条件适用于下一个课程项目以及下一个课程......

因此,现在包含空格,您可以从类中排除特定的空白项 [^\S\r\n]表示除CR或LF之外的所有空格。

答案 1 :(得分:6)

尚未设法在C#中对其进行测试,但以下内容适用于http://www.regexr.com/

Regex.Replace(value.Trim(), @"[^\S\r\n]+", " ");

信用转到Match whitespace but not newlines

正则表达式通过匹配非空格或返回/换行的否定字符类来工作。