在Regex Match组下面,为T4
var input = @": May 13 01:16:14.736 UTC: %XYZ-3-PQR: Hello R0 / 16, changed state";
var regex = new Regex(@":\s+(?<Date>[^%]+)%(?<T1>[A-Za-z]+)-(?<T2>\d+)-(?<T3>[A-Za-z]+):\s+(?<T4>[\w]+)");
var match = regex.Match(input);
if (match.Success)
{
Console.WriteLine(match.Groups["Date"]);
Console.WriteLine(match.Groups["T1"]);
Console.WriteLine(match.Groups["T2"]);
Console.WriteLine(match.Groups["T3"]);
Console.WriteLine(match.Groups["T4"]);
}
输出,
Date: May 13 01:16:14.736 UTC:
T1: XYZ
T2: 3
T3: PQR
T4: Hello
T4
输出应为: Hello R0 / 16,状态改变
正则表达式验证也很好。我们需要改变Regex表达式吗?
答案 0 :(得分:5)
您似乎希望在T4
中捕获该行的其余部分。如果是这样,那么只需使用.*
,即使用以下方法捕获T4
命名组:
(?<T4>.*)
<强>代码:强>
var input = @": May 13 01:16:14.736 UTC: %XYZ-3-PQR: Hello R0 / 16, changed state";
var regex = new Regex(@":\s+(?<Date>[^%]+)%(?<T1>[A-Za-z]+)-(?<T2>\d+)-(?<T3>[A-Za-z]+):\s+(?<T4>.*)");
var match = regex.Match(input);
以下是打印报表的输出,上面对您的正则表达式稍作修改:
May 13 01:16:14.736 UTC:
XYZ
3
PQR
Hello R0 / 16, changed state
答案 1 :(得分:2)
速记字符类\ w与空格(或斜杠或逗号)不匹配,因此捕获在第一个空格处停止。在字符类中添加一个空格(以及斜线,逗号和您期望的任何其他非单词字符),例如[\w /,]