问题描述
From: dhl <legit.sender@noreply.dhl.com>
From: dhl <fake.sender@somedomain.com>
我想写一个正则表达式,在非合法电子邮件“header from”的情况下匹配,也就是说,如果 dhl 出现在“From:”之后,那么 里面的内容必须以 dhl.com
我使用负前瞻得到了以下正则表达式(不确定它是否 100% 准确,但似乎有效):
^From: dhl <.*@(?!.*dhl\.com>$)
现在的问题是我的正则表达式引擎不支持负前瞻,我正在尝试用等效的非捕获组替换它,例如:
(?:[^d]|d[^h]|dh[^l]|dhl[^\.]|dhl\.[^c]|dhl\.c[^o]|dhl\.co[[^m])
到目前为止还没有成功。有什么想法吗?
如果有解决方案,我也想支持大小写混合(如 dhl.COm)。
我正在寻找一种 Postfix 解决方案,最好是不需要 PCRE 的解决方案。
解决方法
因为你不能使用负前瞻,而且你只知道你不想匹配的东西,所以你必须用很多 | 逐个字母地测试它。运营商
这样的事情应该可以工作:
Event_name : (ex: screen) {
Event_paremeter_name: (eg: screen_name) {
Event_parameter_value : (eg: search_page)
}
}
,
我认为这符合要求。
(?<=^From: DHL <).*dhl\.com(?=>$)
只是改变:
^From: DHL
并与它匹配
.*dhl\.com
在域领域更广泛一些:
(?<=^From: DHL <).*dhl\.([a-zA-Z]{1,3})(?=>$)