gpt4 book ai didi

java - 服务器日志的正则表达式模式

转载 作者:行者123 更新时间:2023-12-01 08:51:03 25 4
gpt4 key购买 nike

我从服务器收到以下日志消息,我正在尝试从以下消息中识别正则表达式模式。

2015-10-01T03:14:49.000-07:00 lvn-d1-dev DevServer[9876]: INFO: [EVENT][SEQ=248717] 2015:10:01:03:14:49 101 sign-in_id=11111@psop.com ip_address=1.1.1.1  service_id=IP1234-NPB12345_00 result=RESULT_SUCCESconsole_id=0000000138e91b4e58236bf32besdafasdfasdfasdfsadf  account_id=11111  platform=pik

我使用了以下正则表达式模式

.+\[SEQ=\w+\]\s*(\d+:[\d\d:]+)\s(\d+)\s*.+\=(.+)

使用上面的正则表达式模式,我可以隔离日期(2015:10:01:03:14:49)和ID(101),但我无法收到电子邮件(11111@psop.com)和单独的服务ID。

在我的正则表达式模式字符串中; '\=' 指向最后一个 '=' 匹配。我在这里错过了什么吗?请帮助我识别正则表达式模式。

最佳答案

正则表达式默认是贪婪的。这就是 .+\= 匹配整个剩余字符串直到最后一个 = 的原因。

相反,您可以使用非贪婪版本:.+?\= - 请注意?

完整版本如下所示:

.+\[SEQ=\w+\]\s*(\d+:[\d\d:]+)\s(\d+)\s*(.+?)\=(.+)

此外,你不应该让事情变得过于复杂。正如 @InternetUnexplorers answer 中已经指出的那样:您应该使用与所需值关联的名称作为 anchor 以简化匹配。只要没有一个名字重复,比如

.+\[SEQ=\w+\]\s*(\d+:[\d\d:]+)\s(\d+)\s*sign-in_id\=(.+)

可以。

关于java - 服务器日志的正则表达式模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42405322/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com