-4

次の形式のログファイルがあります。

[BugServices] WX Edit Bug: 4027909 Server: nomos-scanner.corp.adobe.com User:karansha appGUID: wx Elapsed Time: 1204ms method:bug.updateBug Date: Mon Jan 14 09:42:05 IST 2013
[BugServices] WX Edit Bug: 4027909 Server: nomos-scanner.corp.adobe.com User:karansha appGUID: wx Elapsed Time: 1204ms method:bug.updateBug Date: Mon Jan 14 09:42:05 IST 2013
[BugServices] WX Edit Bug: 4027909 Server: nomos-scanner.corp.adobe.com user:vader appGUID: wx Elapsed Time: 1204ms method:bug.updateBug Date: Mon Jan 14 09:42:05 IST 2013
[BugServices] WX Edit Bug: 4027912 Server: nomos-scanner.corp.adobe.com User:gulanand appGUID: wx Elapsed Time: 1204ms method:bug.updateBug Date: Mon Jan 14 09:42:05 IST 2013

C#を使用して、たとえばUser:valueなどのすべての文字列値を取得するにはどうすればよいですか?

4

2 に答える 2

0

ファイル内の各行を繰り返し処理し、その行に正規表現を適用して内容をフィルタリングできます。

これの簡単な例はここにあります方法: 正規表現を使用して文字列を検索する (C# プログラミング ガイド)

私は最近、Jon Skeet がこれとまったく同じことを行った TekPub 経由のビデオを見ました。正規表現のビデオだと思います TekPub Mastering C#

正規表現のテストに使用するサイトはRubular です

于 2013-02-25T12:19:15.060 に答える
0

この @"User:(?.*?) appGUID" のような正規表現を使用すると、ユーザー名のリストを取得できます + 正規表現に別のグループを値で追加できます。以下の例:

        StreamReader reader = new StreamReader("sample.txt");
        string x = reader.ReadToEnd();
        List<string> users = new List<string>();
        int numberOfUsers;

        Regex regex = new Regex(@"(U|u)ser:(?<username>.*?) appGUID");
        MatchCollection matches = regex.Matches(x);
        foreach (Match match in matches)
        {
            string user = match.Groups["username"].ToString().Trim();
            if (!users.Contains(user)) users.Add(user);
        }
        numberOfUsers = users.Count;
于 2013-02-25T12:21:57.970 に答える