我有一个以下格式的文本文件
//*****
// Header comments 1
// Header comments 2
//*****
//=====
// Sub header 1 - comments 1
// Sub header 1 - comments 2
//=====
[Sub_heading1]
Info line 1
Info line 2
Info line n
//=====
// Sub header 2 - comments 1
; Sub header 2 - comments 2 (; indicates comments just like //)
//=====
[Sub_heading2]
Info line 1 //comment about info
Info line 2
Info line n
我想编写正则表达式,将以下结果返回给我:
//=====
// Sub header 1 - comments 1
// Sub header 1 - comments 2
//=====
[Sub_heading1]
Info line 1
Info line 2
Info line n
&安培;
//=====
// Sub header 2 - comments 1
; Sub header 2 - comments 2 (; indicates comments just like //)
//=====
[Sub_heading2]
Info line 1 //comment about info
Info line 2
Info line n
我想出了一些正则表达式。我发布了最接近的一个&它的问题。
正则表达式: ==+(.*?)//=+(.*?)//=
问题:而不是2场比赛,它会返回3场比赛。
匹配1:
====
// Sub header 1 - comments 1
// Sub header 1 - comments 2
//=====
[Sub_heading1]
Info line 1
Info line 2
Info line n
//=
匹配2:
====
// Sub header 2 - comments 1
; Sub header 2 - comments 2 (; indicates comments just like //)
//=====
[Sub_heading2]
Info line 1 //comment about info
Info line 2
Info line n
//=
&安培; Match3:文件的全部内容。
我知道我所获得的比赛与必须的比赛略有不同,但我可以忍受。
问题是当它返回整个文件时,我的C#代码会遇到死锁和放大器。什么都不做。我也在互联网上的正则表达式测试人员上试过这个。它返回没有结果,错误表明模式可能效率低下。
编辑1开始: C#代码:
Regex regEx = new Regex(@"==+(.*?)//=+(.*?)//=", RegexOptions.Singleline);
var results = regEx.Matches(searhText); //searchText refers to the contents of the file as one string.
foreach (Match match in results)
Console.WriteLine(match.Value);//on the last match the code runs in a deadlock
编辑1结束:
有人能指出我更好的解决方法吗?还有为什么这个正则表达式将整个文件内容作为匹配返回。