我正在使用python來解析Postfix日誌文件。我需要匹配包含任意多種模式的行,並在行匹配時提取IP地址Python:匹配多個正則表達式模式之一,並提取IP地址,如果匹配
ip = re.search('^warning: Connection rate limit exceeded: [0-9]* from .*\[([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})\] for service smtp', message)
if not ip:
ip = re.search('^NOQUEUE: reject: RCPT from .*\[([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})\]: .*: Relay access denied; .*', message)
if not ip:
ip = re.search('^NOQUEUE: reject: RCPT from .*\[([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})\]: .*: Recipient address rejected: .*', message)
...
...
print ip.group(1)
任何行只會匹配一個模式。我知道我可以使用'(pattern1 | pattern2 | pattern3)'來匹配多個模式中的任何一個,但由於我使用括號()
來分組我想要提取的IP地址,所以我不知道該怎麼做那。
我會有相當多的模式匹配。什麼是最乾淨/優雅的方式來做到這一點?
請附上您的輸入,電流輸出和預期輸出。 – Forge