このフライト データのリストがあり、正規表現を使用して解析できるようにする必要があります (これはリスト全体ではありません)。
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' を match コレクションに入れ、何らかの方法でそれにアクセスしてコンソールに書き込もうとしています (テストのため、これは最終的な目標ではありません)。