如何匹配日志描述中的前两个单词,但如果它包含#和数字,则不会显示第二个单词。
日志:
<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
但这个不会从第二个日志中拉出查询。
你可以使用下一个正则表达式:(?:[^\|]*\|){5}(\S+)\s(?:[#\d]+|([a-zA-Z]+))\s
你可以使用这个正则表达式:
(?<=[^\|]+?\|)([a-zA-Z]+?\s(?:[^#]+?\s)?)(?<=[^\|]*)