-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#?

4

2 回答 2

0

您可以遍历文件中的每一行,然后将正则表达式应用于该行以过滤内容。

一个简单的例子在这里如何:使用正则表达式搜索字符串(C#编程指南)

我最近通过 TekPub 观看了 Jon Skeet 做这件事的视频,我相信这是正则表达式视频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 回答