这是我要解析的数据测试样本:
Content1
***
Content2
***
Content3
Content3
***
Content4
***
Content5
***
***
Content6
***
***
***
Content7
简而言之,数据条目由新行上的分隔符字符串分隔。我想获取 Content1、Content2、Content3\r\nContent3、\r\nContent4、Content5\r\n、Content6、Content7。我尝试了一个非常简单的 regex (\r\n)?^\*\*\*$(\r\n)?
,它在 RegexBuddy 的 Split 中使用 '^$ match at line breaks' 选项和 .Net flavor selected 为我提供了正确的输出,尽管多个分隔符之间有空字符串,我知道我必须手动删除。但是,以下 C# 代码:
string regexPattern = string.Format(@"(\r\n)?^{0}$(\r\n)?", Regex.Escape("***"));
var records = Regex.Split(document, regexPattern, RegexOptions.Multiline);
返回我整个输入字符串。我在这里错在哪里?
另外,我不明白为什么正则表达式(\r\n)?\*\*\*(\r\n)?
(它并不真正适合我,因为一个条目可以包含分隔符字符串)返回我 Content1、\r\n、\r\n、Content2、\r\n 等. \r\n 物品不应该被贪婪地抢走吗?RegexBuddy 用这个正则表达式给了我正确的输出。