如何匹配日志说明中的前两个单词,但如果第二个单词包含#和数字,我就不会这样做。
日志:
<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
但是这个不会从第二个日志中提取查询。
答案 0 :(得分:0)
您可以使用下一个正则表达式:(?:[^\|]*\|){5}(\S+)\s(?:[#\d]+|([a-zA-Z]+))\s
答案 1 :(得分:0)
您可以使用此正则表达式:
(?<=[^\|]+?\|)([a-zA-Z]+?\s(?:[^#]+?\s)?)(?<=[^\|]*)