我正在尝试从sendmail日志中进行smtp中继并使其可靠我需要在日志条目中需要多个字符串。日志文件条目的示例如下:
2018-02-20T19:35:35+00:00 mx01.example.org sendmail[12345]: v1k82343VJ8K: to=<user@foobar.com>, delay=00:00:01, xdelay=00:00:01, mailer=esmtp, tls_verify=OK, relay=mailserver1.foobar.com. [1.1.1.1], dsn=2.0.0, stat=Sent
我不能只键入“relay =”,因为我需要的特定中继名只出现在包含“to =”的日志条目行中。
如何编写我的正则表达式:
最终结果应为:
mailserver1.foobar.com. [1.1.1.1]
答案 0 :(得分:1)
^.*\bsendmail\b.*\bto=.*relay=\K[^,]*
^
在行首处断言位置.*
多次匹配任何字符\b
断言位置为单词边界sendmail
按字面意思匹配\b
断言位置为单词边界.*
多次匹配任何字符\b
断言位置为单词边界to=
按字面意思匹配.*
多次匹配任何字符relay=
匹配此字面\K
重置比赛的起点。最终匹配中不再包含任何以前消费的字符[^,]*
匹配除,
以外的任何字符结果:mailserver1.foobar.com. [1.1.1.1]