gpt4 book ai didi

python 正则表达式 : inverse match at the end of the line

转载 作者:行者123 更新时间:2023-12-04 08:15:44 24 4
gpt4 key购买 nike

我正在使用正则表达式来匹配我的日志中的模式。我需要在开始时匹配模式,然后反转匹配,即:
我需要匹配这一行:

reject: RCPT from unknown[165.231.143.153]: 450 4.7.25 from=<spameri@tiscali.it> to=<spameri@tiscali.it>
但不是这一行:
reject: RCPT from unknown[165.231.143.153]: 450 4.7.25 from=<spameri@tiscali.it> to=<alice@mydomain.com>
基本上,如果该行包含 to=<alice@mydomain.com> (或任何其他带有 mydomain.com 的电子邮件地址,则不应触发匹配。否则,如果是其他任何内容,即 to=<bob@otherdomain.com>to=<alice@thirddomain.com> 则应匹配。
我尝试使用这种负面展望模式:
'^reject: RCPT from [A-Za-z0-9\.-]+\[{ip}\]: .* to=<[A-Za-z0-9\._-]+@(?!mydomain.com)>',
我在哪里否定 mydomain.com使用构造 (?!mydomain.com)我怎样才能做到这一点 ?

最佳答案

前瞻是非消耗性的,即正则表达式索引保持原样,匹配的模式不会添加到整体匹配值中。
因此,(?!mydomain.com)(?!mydomain.com)>检查是否没有 mydomain , 任何字符, com紧接在当前位置的右侧,下一个字符必须是 > ,它总是正确的。
您需要在 > 之前消耗字符因此你可以使用

^reject: RCPT from [A-Za-z0-9.-]+\[{ip}]: .* to=<[A-Za-z0-9._-]+@(?!mydomain\.com>)[^>]*>
请注意,您不需要转义 .在方括号内(又名字符类),您不需要转义 ]当它不在字符类中时。 @(?!mydomain\.com>)[^>]*>火柴
  • @ - 一个 @字符
  • (?!mydomain\.com>) - 没有立即跟随 mydomain.com>
  • [^>]* - (否定字符类匹配)除 > 之外的任何零个或多个字符
  • > - 一个 >字符。
  • 关于 python 正则表达式 : inverse match at the end of the line,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65715421/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com