我對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足以解決這個問題?或者我會實現更多的代碼(例如比較TimeStamp)
謝謝大家!但我有一個應用程序在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謝謝,我懷疑它。也許我相信要實現更多的代碼。 – nonac
@xanatos,嗨,關於我的編輯的任何建議? – nonac