【C#】正規表現でファイルから情報を取得する

C#

ログファイルなど、形式が決まったファイルからエラーコードや特定のキーワードを含む行を見つけて情報を取得するための正規表現のサンプルコードです。

入力データと出力例

入力ファイル(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 を使用して、エラーコードとメッセージをそれぞれ取得し、コンソールに出力します。

タイトルとURLをコピーしました