正则表达式 - 匹配前两个单词但如果它包含变量则删除第二个单词

问题描述 投票:-2回答:2

如何匹配日志描述中的前两个单词,但如果它包含#和数字,则不会显示第二个单词。

日志:

<14>Dec 19 08:48:44 Xwsdedserfse11 httpd: [century]: Tue, 19 Dec 2017 08:48:44 -0800|JohnnyDoe|auth|INFO|1|Successful login for 'JohnnyDoe' from 1.1.1.1 (authentication type: ldap) 
<12>Dec 19 08:25:18 Xwsdedserfse11 php: [century]: Tue, 19 Dec 2017 08:25:18 -0800||error|WARNING|1|Query #145050 used to generate source data is inactive. 

我的比赛应该是 成功登录 询问 我一直在使用这个(?:[^\|]*\|){5}(\S+\s)(\S+)\s的不同变体,它拉出了前两个单词 和(?:[^\|]*\|){5}(\S+\s)([a-zA_Z]+)\s\(?:[^\|]*\|){5}(\S+\s)([^#0-9]+)\s但这个不会从第二个日志中拉出查询。

regex
2个回答
0
投票

你可以使用下一个正则表达式:(?:[^\|]*\|){5}(\S+)\s(?:[#\d]+|([a-zA-Z]+))\s


0
投票

你可以使用这个正则表达式:

(?<=[^\|]+?\|)([a-zA-Z]+?\s(?:[^#]+?\s)?)(?<=[^\|]*)
© www.soinside.com 2019 - 2024. All rights reserved.