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#正则表达式。