我有一个文字,如下:
Data data
data data blah blah
-------------------------------------------------------------------------
Data data
data data blah blah
-------------------------------------------------------------------------
Data data
data data blah blah
-------------------------------------------------------------------------
Data data
data data blah blah
-------------------------------------------------------------------------
我希望将其拆分为---------
我试过这个:
string[] splitted = Regex.Split(text, "[-][\r][\n]?");
它会拆分它,但是以错误的方式,只需要最后一次-
。
拆分整个短划线的正确重复文本是什么?顺便说一下,这里和那里的数据有单个破折号,我只想在有许多破折号后跟新行分开它。
答案 0 :(得分:3)
您忘记使用适当的量词。您应该拆分1个或更多-
。目前,你只是分成1.另外,请注意,[\r][\n]?
与单\n
不匹配,你也应该考虑:
尝试使用此正则表达式:
Regex.Split(text, "-+(?:\r\n|\r|\n)?");
您可以捕获群组以允许匹配最后---
,但不会以换行符结尾。
答案 1 :(得分:0)
var parts = Regex.Split(text, "(?<=\r\n|^)-------------------------------------------------------------------------(?:\r\n|$)")
含义:很多-----前面有一个新行或字符串的开头,后跟一个新行或字符串的结尾。
优势在于它不会削减文本中存在的随机-
。
更短的:
var parts = Regex.Split(text, "(?<=\r\n|^)-{73}(?:\r\n|$)")
答案 2 :(得分:0)
string text = @"data1
data1-1
-------------------------------------------------------------------------
data2
data2-1
-------------------------------------------------------------------------
data3
data3-1";
Regex re = new Regex(@"^-+", RegexOptions.Multiline);
string[] matches = re.Split(text);
foreach (string match in matches)
Console.WriteLine("match = " + match/*.Trim()*/);
打印
match = data1
data1-1
match =
data2
data2-1
match =
data3
data3-1