【问题标题】:.net search for string between two known strings in a file.net 搜索文件中两个已知字符串之间的字符串
【发布时间】:2016-06-16 19:38:29
【问题描述】:

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

MyStartString "response:"我从 web service1 的回复 MyEndString 之间的一些数据 ***MyStartString* "response:"我从 web service2 的回复 **MyEndString

所以它会是这样的(大约 70MB 文件)。我需要检索“响应:”我来自 web service1 的响应和“响应:”我来自 web service2 等的响应到一个列表中。我看到我们可以用正则表达式做到这一点。有人可以帮我吗。我在上面看到了Stackoverflow post

更新:我粘贴在我的文件提取下方。因此,您可以在下面看到“****MgrType 响应正文**”和“**End::”。他们之间有回应。我需要得到这些回应。图片文件

我的文件提取:

员工类型:经理

MgrType 请求负载 {“事件”:[{“一些数据”}]}}}}]}

****Nfn 响应标头**

X-Original-HTTP-Status-Code:200

我的ID:cc24e044-babf-46d3-bda5-bb0de1e586e5

连接:关闭

日期:格林威治标准时间 2016 年 6 月 14 日星期二 21:28:01

*MgrType 响应正文

{"response":{" 一些数据 1 \n--- END MESSAGES ---\n"}]}}}

End::Event 1 out of 1

* 使用 Nfn 完成到 xyzserver*

这里有一些数据1

这里有一些数据2

这里有一些数据3

这里有一些数据4

...

这里有一些数据555

*MgrType 响应正文

{"response":{"一些数据 2\n--- END MESSAGES ---\n"}]}}}

End::Event 1 out of 1

* 使用 Nfn 完成到 xyzserver*

【问题讨论】:

  • 您需要更精确地指定文件的格式。它有多条线路吗?起始符和终止符字符串可以出现在文件(或行)中的什么位置?
  • @AttilaRepasi。我已经添加了文件提取。

标签: .net regex string file search


【解决方案1】:

使用 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);

【讨论】:

  • 您的表达式将选择空格和星号。我建议这个(?&lt;=MyStartString)(?:[\s\*]*)(.+?)(?:[\s\*]*)(?=MyEndString)。此外,如果每行可能有多个匹配项,则应使用全局修饰符。
  • @Niitaku,我尝试了这两种技术并获得了一个空字符串列表,即“”(计数 51)。这是放的内容: sList.Add(Regex.Match(s, @"(?regex101.com 中正确匹配。但不在这里。请看附图。
猜你喜欢
  • 2011-01-30
  • 2022-01-11
  • 1970-01-01
  • 2013-07-25
  • 2012-05-18
  • 2020-11-13
  • 1970-01-01
  • 1970-01-01
  • 2019-10-27
相关资源
最近更新 更多