【发布时间】:2012-12-24 02:12:40
【问题描述】:
Regex messageServerRegex =
new Regex(@"([0-9\-]{10})\ ([0-9:]{8})\ \[TEXT\]\ (\[Server\])\ ([^\[]*)");
if (messageServerRegex.IsMatch(rchConsoleText))
{
var infoMatches = messageServerRegex.Split(rchConsoleText);
Console.WriteLine("Date: {0}\nTime: {1}\nType: {2}\nMessage: {3}",
infoMatches[1], infoMatches[2], infoMatches[3], infoMatches[4]);
}
这是我们希望服务器过滤的文本的两个示例
2012-12-24 02:24:18 [TEXT] [Server] 2012-12-24 02:24:18 [TEXT] [Server] 示例文本。
我们想要从这行返回的结果是:
日期:2012-12-14 时间:02:24:18 类型:[文本] [服务器] 消息:2012-12-24 02:24:18 [TEXT] [Server] 示例文本。但它会回复:
日期:2012-12-14 时间:02:24:18 类型:[文本] [服务器] 留言:2012-12-24 02:24:18如您所见,它只显示日期和时间,那是因为正则表达式过滤了它,所以我如何让它只将日期和时间削减 1 次?
第二个例子运行良好,即:
2012-12-24 02:24:18 [TEXT] [Server] 示例文本示例文本示例文本。
我们想要从这行返回的结果是:
日期:2012-12-14 时间:02:24:18 类型:[文本] [服务器] 消息:示例文本示例文本示例文本。【问题讨论】:
-
您使用Split有什么原因吗?我认为这使它变得比它需要的更复杂。为什么不将
regex.Match或.Matches与命名组一起使用? -
@agent-j 这不是在同一个输出中解析吗?