【发布时间】:2014-11-15 06:14:42
【问题描述】:
我正在使用这个正则表达式,
Regex.Replace(value.Trim(), @"\s+", " ");
将多余的空格修剪并最小化为一个空格。
问题在于它还会从文本中删除新行。
如何修复正则表达式以使其保留新行?
【问题讨论】:
标签: c# regex newline whitespace
我正在使用这个正则表达式,
Regex.Replace(value.Trim(), @"\s+", " ");
将多余的空格修剪并最小化为一个空格。
问题在于它还会从文本中删除新行。
如何修复正则表达式以使其保留新行?
【问题讨论】:
标签: c# regex newline whitespace
我还没有设法在 C# 中对其进行测试,但以下适用于 http://www.regexr.com/:
Regex.Replace(value.Trim(), @"[^\S\r\n]+", " ");
感谢Match whitespace but not newlines
正则表达式通过匹配非空格或返回/换行符的否定字符类来工作。
【讨论】:
在空白类中排除 CRLF 的 [^\S\r\n]+。
[^] 是一个否定类。 \S 是一个否定类,等于 not [ space, tab, ff, lf, cr ]
关于否定类的事情是它被排除在组之外并适用于每个成员 分别在群里。就像数学一样,两个负数等于一个正数。
不是不是空格=[^\S]=[\s]
但是,否定条件适用于下一个类项目以及下一个......
因此,既然包含了空白,您可以从类中排除特定的空白项。
[^\S\r\n] 表示除 CR 或 LF 之外的所有空格。
【讨论】: