我有一个regex搜索日志文件中的IP地址。我是用积极的眼光看这个。我希望在包含phpExecution的行中获取IP地址。我的判罚是
(?<=.*sqlExecution.*"ip":")[^"]+问题是我们正在使用的日志分析工具(graylog)不支持回溯。此regex适用于VSCode搜索和在线regex测试人员。但在灰色日志中,它不起作用。
对于这个正则表达式,没有回头看的情况下还有其他的选择吗?
样本日志线:
<200> Nov 16 14:36:10 phpExecution INFO: Php Execution {"ip":"33.333.333.33","workspace":"gasqazvin","timeZone":"2019-11-16 14:11:10","usrUid":"","action":"phpExecution","filename":"/var/www/html/pm/shared/sites/work/public/1244635345345/23425452.php","url":"/syswork/fa/modern/1244635345345/23425452.php?"}
它不仅仅是IP字段,我必须对所有字段都这样做,比如workflow、timezone、.。所以这可能不仅仅是数字。
发布于 2020-01-22 07:25:03
您可以尝试这种模式phpExecution.+"ip":\s*"([^"]+)。
解释:
phpExecution -匹配phpExecution字面意思
任何字符的.+ - 1+
"ip": -匹配"ip":字面意思
白色空间的\s* - 0+
"([^"]+) -匹配"字面意思,然后1+字符从"的其他,并存储在第一捕获组-这将是您想要的价值。
请注意,可以将任何字段名替换为ip。
发布于 2020-01-22 07:32:25
这里有一个解决方案:
\"ip\":\"([^\"]+)\".+\"action\":\"phpExecution\".+假设如下:phpExecution总是位于JSON中的IP地址之后
演示:https://regex101.com/r/6rJcia/1
请注意,我建议在这项工作中使用JSON解析器。
https://stackoverflow.com/questions/59854420
复制相似问题