正则不捕获新线
我正在尝试使用Regex解析日志文件。日志看起来像:
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.
这是我尝试过的(REGEX 101上的实时版本 https://regex101.com /r/rodu5l/1 )
^(?<timestamp>^[\d-]+\s[\d:.]+)\|DEBUG\|(.*?)?\r?$|.*?(?<path>\\.*\]\s)(?<description>.*)+$ /gm
问题是它没有采用最后一行的“ ut Condimentum nisl ipsum”。
感谢您的帮助
I am trying to parse log files using regex. logs looks like that:
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.
Here is what I have tried (live version on regex 101 https://regex101.com/r/RoDU5L/1)
^(?<timestamp>^[\d-]+\s[\d:.]+)\|DEBUG\|(.*?)?\r?$|.*?(?<path>\\.*\]\s)(?<description>.*)+$ /gm
The problem is that it is not taking the last line "Ut condimentum nisl ipsum."
Thanks for your help
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以使用
regex demo 。
。*(?:\ r?\ n(?![\ d-]+\ s [\ d:。]+\ |)。*)*
part现在匹配。 *
- 除了线断裂字符以外,任何零或更多的字符,尽可能多的(?\ r?\ n(?![\ d-]+\ s [\ d:。]+ \ |)。*)*
- 零或更多的出现\ r?\ n(?![\ d-]+\ s [\ d:。]+\ |)
- CRLF或LF线结束,现在紧随其后的是DateTime-like。模式和|
在之后
。*
- 除drake chars以外的任何零或更多char,尽可能多的炭。You can use
See the regex demo.
The
.*(?:\r?\n(?![\d-]+\s[\d:.]+\|).*)*
part now matches.*
- any zero or more chars other than line break chars, as many as possible(?:\r?\n(?![\d-]+\s[\d:.]+\|).*)*
- zero or more occurrences of\r?\n(?![\d-]+\s[\d:.]+\|)
- CRLF or LF line ending now immediately followed with a datetime-like pattern and a|
right after.*
- any zero or more chars other than line break chars, as many as possible.