我正在嘗試使用正則運算式決議日志檔案。日志看起來像這樣:
2022-04-01 00:00:00.0000|DEBUG|LOREM:LOREM|IPSUM:LOREM:LOREMIPSUM Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam vel placerat sapien. Suspendisse interdum est nulla, ac interdum sem pellentesque vel. Ut condimentum nisl ipsum (Failed:1/Total:5) [10.0000 ms].
2022-04-01 00:00:00.0000|DEBUG|LOREM:IPSUM|lorem ipsum \\SOME-PATH[Lorem Ipsum] (ID:000000-0000-0000-0000). Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam vel placerat sapien. Suspendisse interdum est nulla, ac interdum sem pellentesque vel. //line return here
Ut condimentum nisl ipsum.
2022-04-01 00:00:00.0000|DEBUG|LOREM:IPSUM|lorem ipsum \\SOME-PATH[Lorem Ipsum] (ID:000000-0000-0000-0000). Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam vel placerat sapien. Suspendisse interdum est nulla, ac interdum sem pellentesque vel. //line return here
Ut condimentum nisl ipsum.
這是我嘗試過的(正則運算式 101 上的實時版本https://regex101.com/r/RoDU5L/1)
^(?<timestamp>^[\d-] \s[\d:.] )\|DEBUG\|(.*?)?\r?$|.*?(?<path>\\.*\]\s)(?<description>.*) $ /gm
問題是它沒有采用最后一行“Ut condimentum nisl ipsum”。
謝謝你的幫助
uj5u.com熱心網友回復:
您可以使用
^(?<timestamp>^[\d-] \s[\d:.] )\|DEBUG\|(.*(?:\r?\n(?![\d-] \s[\d:.] \|).*)*)|.*?(?<path>\\.*\]\s)(?<description>.*) $
請參閱正則運算式演示。
該.*(?:\r?\n(?![\d-] \s[\d:.] \|).*)*部分現在匹配
.*- 除換行符以外的任何零個或多個字符,盡可能多(?:\r?\n(?![\d-] \s[\d:.] \|).*)*- 零次或多次出現\r?\n(?![\d-] \s[\d:.] \|)- CRLF 或 LF 行結尾現在緊跟一個類似日期時間的模式和緊隨|其后.*- 除換行符之外的任何零個或多個字符,盡可能多。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/465813.html
