【发布时间】:2017-04-11 13:34:44
【问题描述】:
我对 Microsoft 的 regex(正则表达式)有疑问。我有一个在这种模式下写入的日志文件。
2017-02-20 15:58:45.442 - [XYZ] 155 RADIO_TRAIN_TO_TRACK_INITIATION_COM_SESSION
.VAR1A: 155
.VAR2B
.VAR3z
.VAR4t
2017-02-20 15:58:46.432 - [XYZ] 32 RADIO_TRACK_TO_TRAIN_CONFIGURATION_DETERMINATION
.VAR1A: 32
.VAR2Y
.VAR3s
.VAR4a
.VAR5w
.VAR6d
2017-02-20 15:58:48.541 - [XYZ] 156 RADIO_TRAIN_TO_TRACK_INITIATION_COM_SESSION
.VAR1A: 156
.NIDPACKET
.VAR3l
.VAR56
.VAR7b
.VAR100k
问题:我将有一个表达式来检查第一条消息 [XYZ] 155 和第二条消息 [XYZ] 32 是否连续并且它们在 10 秒的间隔内。
所以,我的问题是:regex 足以解决这个问题吗?或者我会实现更多代码(例如比较时间戳)
谢谢大家!但我有一个 C# 应用程序,我会尝试添加您的代码来修改它。
我的想法是:
1) 将所有文本提取到 mex [XYZ] 155 并将所有文本提取到 mex [XYZ] 156(包括时间戳)
2) 检查时间戳是否在 10 秒的间隔内。正确返回OK,不正确返回空解。
关于第一点,我试试这个正则表达式
(?<=\[XYZ] \b155\b(?:(?!\n\d{4}-\d{2}-\d).)*?\n {3,}\.).*(?:\r?\n(?!\d{4}-\d{2}-\d).*)*|(?<=\[XYZ] \b156\b(?:(?!\n\d{4}-\d{2}-\d).)*?\n {3,}\.).*(?:\r?\n(?!\d{4}-\d{2}-\d).*)*
它提取所有文本,但不提取时间戳。有什么解决办法吗?
【问题讨论】:
-
您可以使用
Regex提取时间戳...但是您必须比较它们,可能会将它们转换为Timespan -
@xanatos 谢谢,我怀疑。也许我相信实现更多的代码。
-
@xanatos,嗨,对我的编辑有什么建议吗?
标签: regex regex c# regex msdn dngrep