.net搜索文件

时间:2016-06-16 19:38:29

标签: .net regex string file search

我有一个大文本文件。其中有很多不相关的数据。我可以将它读入StreamReader并执行while循环。我的文本文件是这样的

MyStartString      "回复:"我对来自web service1的回复 的 MyEndString 介于两者之间的数据 *** MyStartString * "回复:"我对来自web service2的回复 ** MyEndString

所以它会像这样(大约70MB文件)。我需要检索"响应:"我的回复来自web service1和"响应:"我的回复来自web service2等到列表中。我看到我们可以用Regex做到这一点。有人可以帮我吗。我在这上面看到Stackoverflow post

更新:我粘贴在我的文件提取下面。所以,你可以看到" **** MgrType Response Body **"和" **结束::"下面。他们之间有一个回应。我需要得到那些回复。图像文件Regex correct matched with 2 matches

我的文件摘录:

employeetype:manager

MgrType请求有效负载 {"活动":[{"部分数据"}]}}}}}}

**** Nfn响应标题**

X-Original-HTTP-Status-Code:200

MyID:cc24e044-babf-46d3-bda5-bb0de1e586e5

连接:关闭

日期:2016年6月14日星期二21:28:01 GMT

* MgrType响应正文

{"响应" {"一些数据1 \ n ---结束消息--- \ n"}]}}}

结束:: 1中的事件1

*使用Nfn完成xyzserver *

SOMEDATA HERE1

SOMEDATA HERE2

SOMEDATA HERE3

SOMEDATA HERE4

...

SOMEDATA HERE555

* MgrType响应正文

{"响应" {"一些数据2 \ n ---结束消息--- \ n"}]}}}

结束:: 1中的事件1

*使用Nfn完成xyzserver *

1 个答案:

答案 0 :(得分:0)

使用Regex.Match并在模式中搜索起始字符串和结束字符串之间的任何字符。如果匹配,请添加到列表中。

string s;
List<string> sList = new List<string>();

using(StreamReader oReader = new StreamReader("Text1.text"))
{
     while((s = oReader.ReadLine()) != null)
     {
         sList.Add(Regex.Match(s, @"MyStartString(.+?)MyEndString").Groups[1].Value);
     }
}
foreach(string s in sList)
    Console.WriteLine(s);