我正在使用这个正则表达式:
Regex.Replace(value.Trim(), @"\s+", " ");
修剪并将额外空间减少到一个空间 问题是它还从文本中删除新行。
如何修复正则表达式以保持新行?
答案 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
正则表达式通过匹配非空格或返回/换行的否定字符类来工作。