【发布时间】:2013-03-27 22:08:48
【问题描述】:
这是我试图解析的数据测试样本:
Content1
***
Content2
***
Content3
Content3
***
Content4
***
Content5
***
***
Content6
***
***
***
Content7
简而言之,数据条目在新行上由分隔符字符串分隔。我想获取 Content1、Content2、Content3\r\nContent3、\r\nContent4、Content5\r\n、Content6、Content7。我尝试了一个非常简单的正则表达式 (\r\n)?^\*\*\*$(\r\n)?,它在 RegexBuddy 的 Split with '^$ match at line breaks' 选项和选择的 .Net 风格中为我提供了正确的输出,尽管多个分隔符之间有空字符串,我知道我必须删除手动。但是,下面的 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 使用此正则表达式为我提供正确的输出。
【问题讨论】:
标签: .net regex parsing split regex-greedy