为什么不打印C#

时间:2019-05-08 16:24:52

标签: c# regex

我已经编写了这个非常简单的正则表达式代码

using System;
using System.Text.RegularExpressions;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {

            string lines = "2019-05-07 11:50:28, INFO Ayush Singhania, Level 1, EID: 1001, UID: ayush.power, Message: Create a Job";
            Regex pattern = new Regex(@"(?<Date>.*?\s)(?<Time>.*?), INFO(?<Name>.*?),(?<Level>.*?), EID: (?<EID>.*?), UID: (?<UID>.*?), Message: (?<Message>.*?)");

            MatchCollection myMatchCollection = pattern.Matches(lines);
            foreach (Match myMatch in myMatchCollection)
            {
                var Date = myMatch.Groups["Date"].Value;
                var Time = myMatch.Groups["Time"].Value;
                var Name = myMatch.Groups["Name"].Value;
                var Level = myMatch.Groups["Level"].Value;
                var EID = myMatch.Groups["EID"].Value;
                var UID = myMatch.Groups["UID"].Value;
                var Message = myMatch.Groups["Message"].Value;

                Console.Out.WriteLine(Date);
                Console.Out.WriteLine(Time);
                Console.Out.WriteLine(Name);
                Console.Out.WriteLine(Level);
                Console.Out.WriteLine(EID);
                Console.Out.WriteLine(UID);
                Console.Out.WriteLine(Message);
            }
        }
    }
}

以下内容的输出是:

2019-05-07
11:50:28
阿尤什·辛哈尼亚
1级
1001
ayush.power
...........(最后一行是空白)

对于最后一个组-“消息”,一切工作都很好excel
它不打印任何内容。有人可以建议为什么吗?
我也认为我的正则表达式模式是正确的。在这里https://regex101.com/r/ysawNT/1

进行检查

2 个答案:

答案 0 :(得分:3)

除了使用错误的消息Groups["Message"](应为MSG)之外,最后一部分为空,因为最后一部分没有边界设置并且非贪婪的.*?也可以匹配什么都没有。

您可以做的是使用(?<MSG>.*)

匹配其余字符串。

Regex demo | C# demo

enter image description here

答案 1 :(得分:1)

您的组应该是味精

var Message = myMatch.Groups["MSG"].Value;