使用正则表达式根据C sharp中的字段值打印所需的行?

时间:2013-03-07 11:17:39

标签: c#

在我的日志文件中,字段“appGUID”主要有3种类型的值,即“wx”,“null”以及包含字符和数字混合的值。我希望以这样的方式过滤掉内容:包含“wx”和“null”的所有appGUID值都存储在一个空的新字符串中,并且丢弃包含字符和数字混合的appGUID值。  我无法弄清楚它的正则表达式。请帮忙。

我的日志文件格式为:

  

INFO [com.adobe.watson.vo.BugServices] WX编辑错误:3494430服务器:   yukon.corp.adobe.com用户:xinche appGUID:null INFO   [com.adobe.watson.vo.BugServices] WX编辑错误:3494430服务器:   yukon.corp.adobe.com用户:xinche appGUID:null INFO   [com.adobe.watson.vo.BugServices] WX编辑错误:3419432服务器:   yukon.corp.adobe.com用户:预发布appGUID:fcdd2153-bbdf INFO   [com.adobe.watson.vo.BugServices] WX编辑错误:3419432服务器:   yukon.corp.adobe.com用户:预发布appGUID:fcdd2153-bbdf INFO   [com.adobe.watson.vo.BugServices] WX编辑错误:3494430服务器:   yukon.corp.adobe.com用户:xinche appGUID:wx INFO   [com.adobe.watson.vo.BugServices] WX编辑错误:3494430服务器:   yukon.corp.adobe.com用户:xinche appGUID:wx INFO   [com.adobe.watson.vo.BugServices] WX编辑错误:3494430服务器:   yukon.corp.adobe.com用户:xinche appGUID:null INFO   [com.adobe.watson.vo.BugServices] WX编辑错误:3494430服务器:   yukon.corp.adobe.com用户:xinche appGUID:null INFO   [com.adobe.watson.vo.BugServices] WX编辑错误:3419432服务器:   yukon.corp.adobe.com用户:预发布appGUID:fcdd2153-bbdf INFO   [com.adobe.watson.vo.BugServices] WX编辑错误:3419432服务器:   yukon.corp.adobe.com用户:预发布appGUID:fcdd2153-bbdf

我的代码在这里:

StreamReader reader = new StreamReader(@"C:\Users\karansha\Desktop\Karan Logs\20110717.txt");
string x = reader.ReadToEnd();
List<string> users = new List<string>();
Regex regex = new Regex(@"appGUID:\s*(?<value>.*?)\s");
MatchCollection matches = regex.Matches(x);
foreach (Match match in matches)
{
    var user = match.Groups["value"].Value;
    if (!users.Contains(user)) users.Add(user);
}

1 个答案:

答案 0 :(得分:0)

您可以使用appGUID: (?<value>wx|null)

StreamReader reader =
    new StreamReader(@"C:\Users\karansha\Desktop\Karan Logs\20110717.txt");
string x = reader.ReadToEnd();
List<string> users = new List<string>();
Regex regex = new Regex(@"appGUID: (?<value>wx|null)");
MatchCollection matches = regex.Matches(x);
foreach (Match match in matches)
{
    var user = match.Groups["value"].Value;
    if (!users.Contains(user))
        users.Add(user);