ログファイルなど、形式が決まったファイルからエラーコードや特定のキーワードを含む行を見つけて情報を取得するための正規表現のサンプルコードです。
入力データと出力例
入力ファイル(INFOとERRORがある。エラー番号は3桁)
INFO(I056): Application started
ERROR(E234): Database connection failed
INFO(I078): Processing started
ERROR(E398): File read error
INFO(I099): Process completed
出力例(発生したエラーのみ表示。形式を変更している)
エラーコード:234
Database connection failed
エラーコード:398
File read error
サンプルコード
using System;
using System.IO;
using System.Text.RegularExpressions;
class Program
{
static void Main(string[] args)
{
string logFilePath = @"C:\path\to\your\log.txt"; // ログファイルのパス
try
{
using (StreamReader reader = new StreamReader(logFilePath))
{
string line;
while ((line = reader.ReadLine()) != null)
{
// 正規表現でエラーコードとメッセージを抽出
Match match = Regex.Match(line, @"ERROR\(E(\d{3})\): (.*)");
if (match.Success)
{
string errorCode = match.Groups[1].Value; // エラーコードの抽出
string message = match.Groups[2].Value; // エラーメッセージの抽出
Console.WriteLine($"エラーコード:{errorCode}");
Console.WriteLine(message + "\n");
}
}
}
}
catch (Exception ex)
{
Console.WriteLine("エラーが発生しました: " + ex.Message);
}
}
}
このサンプルコードでは、Regex.Matchメソッドを使用してエラーコードとエラーメッセージを抽出しています。
正規表現 “ERROR(E\d{3}): (.*)” は “ERROR(E” に続く3桁の数字(\d{3})とその後のメッセージをキャプチャします。
match.Groups[1].Value と match.Groups[2].Value を使用して、エラーコードとメッセージをそれぞれ取得し、コンソールに出力します。
まとめ
本記事では、正規表現を使用してファイルから特定の情報を抜き出して表示する方法を紹介しました。