使用正则表达式和列表对文本文件进行分组

本文关键字:文件 文本 正则表达式 列表 | 更新日期: 2023-09-27 17:53:47

我有一个文件,我想把它分成两组。下面是我一直在编写的一段代码:

string path = "TextFile";
string lines[] = File.ReadAllLines(path);
int count = lines.Length;
List<string> groupAlpha = lines.Take(7678).ToList();
List<string> groupBeta = lines.Skip(7678).Take(5292).ToList();

数字表示行号。我的问题是它使用行号将它们分成组。如果我将来要使用不同的文件,它可能不会被这些精确的数字分开。但我知道每个都以:

开头
***********BEGIN PROCESSING ALPHA PNRS***********

并以:

结尾
************END PROCESSING ALPHA PNRS************

Beta与alpha相同,但Beta被插入到alpha所在的位置。

我的问题是,是否有一种语法方式,它类似于我上面有什么,但使用正则表达式来解决我的问题,使这些成2组列表?如果有的话,你能不能以回答的形式而不是评论的形式告诉我?谢谢!

使用正则表达式和列表对文本文件进行分组

Linq完全能够做到这一点,在我看来,使用正则表达式会使它变得更加困难。

string alphaStart = "***********BEGIN PROCESSING ALPHA PNRS***********";
string alphaEnd = "************END PROCESSING ALPHA PNRS************";
string betaStart = "***********BEGIN PROCESSING BETA PNRS***********";
string betaEnd = "************END PROCESSING BETA PNRS************";

List<string> groupAlpha = (lines.SkipWhile(s => s != alphaStart).Skip(1).TakeWhile(s => s != alphaEnd)).ToList();
List<string> groupBeta = (lines.SkipWhile(s => s != betaStart).Skip(1).TakeWhile(s => s != betaEnd)).ToList();