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

时间:2017-12-20 01:53:01

标签: regex

如何匹配日志说明中的前两个单词,但如果第二个单词包含#和数字,我就不会这样做。

日志:

<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但是这个不会从第二个日志中提取查询。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

您可以使用此正则表达式:

(?<=[^\|]+?\|)([a-zA-Z]+?\s(?:[^#]+?\s)?)(?<=[^\|]*)