所以我有这个飞行数据列表,我需要能够使用正则表达式解析它(这不是整个列表)。
1 AA2401 F7 A4 Y7 B7 M7 H7 K7 /DFW A LAX 4 0715 0836 E0.M80 9 3:21 2 AA2421 F7 A1 Y7 B7 M7 H7 K7 DFWLAX 4 1106 1215 E0.777 7 3:09 3UA:US6352 B9 M9 H9 K0 /DFW 1 LAX 1200 1448 E0.733 1:48
例如,我可能需要从第一行开始 1、AA、2401,以此类推。现在,我不是要求有人为我想出一个正则表达式,因为在大多数情况下,我已经到达了我自己几乎可以处理的地方。我的问题更多地与能够将数据存储在某个地方并访问它有关。
所以我只是想最初只是“匹配”我需要的第一条数据,即行号“1”。我仅获取第一个数字的“模式”是: ".?(\d{1,2}).*" 。它是 {1,2} 的原因是因为很明显,一旦你超过 10,它就需要能够取 2 个数字。该行的其余部分设置为肯定是空格或字母。
这是代码:
var assembly = Assembly.GetExecutingAssembly();
var textStreamReader = new StreamReader(
assembly.GetManifestResourceStream("FlightParser.flightdata.txt"));
List<string> lines = new List<string>();
do
{
lines.Add(textStreamReader.ReadLine());
} while (!textStreamReader.EndOfStream);
Regex sPattern = new Regex(@".?(\d{1,2}).*");//whatever the pattern is
foreach (string line in lines)
{
System.Console.Write("{0,24}", line);
MatchCollection mc = sPattern.Matches(line);
if ( sPattern.IsMatch(line))
{
System.Console.WriteLine(" (match for '{0}' found)", sPattern);
}
else
{
System.Console.WriteLine();
}
System.Console.WriteLine(mc[0].Groups[0].Captures);
System.Console.WriteLine(line);
}//end foreach
System.Console.ReadLine();
使用我正在编写的代码,我基本上只是试图将“1”放入匹配集合并以某种方式访问它并将其写入控制台(为了测试,这不是最终目标)。