.NET Regex查询只能查找一个新行

时间:2010-03-04 23:35:55

标签: c# regex split

我有一个巨大的字符串,如下所示:

“文本
文字
文字
文本

文本
文字
文字
文字

文本
文字
文字
文本

请注意,每个文本块之间是一个新行。另请注意,最后一个文本块后面有两行新行。所以,当我做一个

string[] strArray = Regex.Split(content, "\r\n");

这很有效,因为它会查找回车后跟新行的模式。但是,对于数组中的最后一个条目,它只创建一个“”(空字符串),因为它在最后一个额外的新行上进行了拆分。

所以我想要一个正则表达式,而不是“\ r \ n”,它将在\ r \ n上分开并且恰好是一个\ n。

任何想法?

3 个答案:

答案 0 :(得分:5)

为什么不做这样的事情?

var strArray = content.Split(new[] { "\r\n" },
    StringSplitOptions.RemoveEmptyEntries);

答案 1 :(得分:1)

匹配\ r \ n后面没有附加\ n的正则表达式

"\r\n(?!\n)"

这对你有帮助吗?我想在上面的例子中,最后一个文本将包含尾随的“\ r \ n \ n”然后......

答案 2 :(得分:0)

示例字符串的结尾将是

“Text \ r \ nText \ r \ nText \ r \ n \ r \ n”,

不是

“文本\ r \ n文字\ r \ n文字\ r \ n \ n” 个

你似乎在想,即使行是空的,每一行都以“\ r \ n”结尾。 (混淆可能源于\ r被称为“cariage return”而\ n被称为“newline”)。

如果你想拆分字符串并忽略任何空行,你可以试试

string[] strArray = Regex.Split(content, "(\r\n)*");