我已经编写了这个非常简单的正则表达式代码
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
答案 0 :(得分:3)
除了使用错误的消息Groups["Message"]
(应为MSG
)之外,最后一部分为空,因为最后一部分没有边界设置并且非贪婪的.*?
也可以匹配什么都没有。
您可以做的是使用(?<MSG>.*)
答案 1 :(得分:1)
您的组应该是味精
var Message = myMatch.Groups["MSG"].Value;