Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# .NET正则表达式查询以仅查找一个新行_C#_Regex_Split - Fatal编程技术网

C# .NET正则表达式查询以仅查找一个新行

C# .NET正则表达式查询以仅查找一个新行,c#,regex,split,C#,Regex,Split,我有一根巨大的绳子,看起来像这样: “文本 文本 文本 正文 文本 文本 文本 正文 文本 文本 文本 正文 " 请注意,在每个文本块之间有一个新行。还要注意,最后一个文本块后面有两行新行。所以当我做一个 string[]strArray=Regex.Split(内容,“\r\n”) 这很有效,因为它寻找一种回车模式,然后是新行。但是,对于数组中的最后一个条目,它只创建一个“”(空字符串),因为它在最后一个额外的新行上进行拆分 因此,我需要一个正则表达式,而不是“\r\n”,它将在\r上拆分,并

我有一根巨大的绳子,看起来像这样:

“文本
文本
文本
正文

文本
文本
文本
正文

文本
文本
文本
正文

"

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

string[]strArray=Regex.Split(内容,“\r\n”)

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

因此,我需要一个正则表达式,而不是“\r\n”,它将在\r上拆分,并且正好是一个


有什么想法吗?

为什么不这样做呢

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

将匹配\r\n且后面没有附加\r\n的正则表达式如下所示

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

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

示例字符串的结尾将是

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

不是

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

正如您所想,即每行都以“\r\n”结尾,即使行是空的。(混淆可能源于以下事实,\r称为“cariage return”,而\n称为“newline”)

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

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

也许删除数组的最后一个元素会更容易些?请注意,它是.NET正则表达式,而不是C#正则表达式。