我正在使用下面的正则表达式来从使用尖叫青蛙的网页中提取电子邮件地址
[a-zA-Z0-9-_.]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+
但某些电子邮件类型,如下面包括这是无效的
ex: logo_large_LBI-300x112@2x.png
我需要尖叫青蛙排除这样的。png扩展名电子邮件类型请有人帮助我更新regex遵循我试过了,但没有运气,需要帮助。
g6ll5ycj1#
从技术上讲,字符串logo_large_LBI-300x112@2x.png * 在语法上是一个有效的电子邮件地址。这就是它匹配regexp的原因。但实际上,你是对的,它可能不打算作为一个电子邮件地址,它不会作为一个工作(没有顶级域名命名为“png”…对不起,Papua New Guinea)。不幸的是,将超过1500个现有顶级域的完整列表放入一个regexp中进行检查将非常难以操作。但您可以检查常见的图像文件扩展名并排除它们,如下所述。如果Screaming Frog在其正则表达式中支持负lookahead,您可以使用如下内容:
logo_large_LBI-300x112@2x.png
[a-zA-Z0-9-_.]+@[a-zA-Z0-9-.]+\.(?!(png|jpg)$)([a-zA-Z0-9-]+)$
(?!(png|jpg)$)是负先行,要求最后的“字”不匹配png或jpg。扩展列表以包括您认为必要的任何其他图像文件扩展名,例如。
(?!(png|jpg)$)
png
jpg
[a-zA-Z0-9-_.]+@[a-zA-Z0-9-.]+\.(?!(png|jpg|jpeg|gif|webp|heic)$)([a-zA-Z0-9-]+)$
只是一句警告,使用lookahead会大大降低正则表达式匹配的速度。你检查的扩展越多,它就越慢。上面的regexp可能会优化得更好。
7uhlpewt2#
首先,你应该减少范围,a-zA-Z0-9_到\w,它是相同的模式。当您到达电子邮件地址中的.时,请使用负向前瞻。[-.\w]+@[-.\w]+\.(?!png)[-.\w]+。
a-zA-Z0-9_
\w
.
[-.\w]+@[-.\w]+\.(?!png)[-.\w]+
2条答案
按热度按时间g6ll5ycj1#
从技术上讲,字符串
logo_large_LBI-300x112@2x.png
* 在语法上是一个有效的电子邮件地址。这就是它匹配regexp的原因。但实际上,你是对的,它可能不打算作为一个电子邮件地址,它不会作为一个工作(没有顶级域名命名为“png”…对不起,Papua New Guinea)。不幸的是,将超过1500个现有顶级域的完整列表放入一个regexp中进行检查将非常难以操作。但您可以检查常见的图像文件扩展名并排除它们,如下所述。
如果Screaming Frog在其正则表达式中支持负lookahead,您可以使用如下内容:
(?!(png|jpg)$)
是负先行,要求最后的“字”不匹配png
或jpg
。扩展列表以包括您认为必要的任何其他图像文件扩展名,例如。只是一句警告,使用lookahead会大大降低正则表达式匹配的速度。你检查的扩展越多,它就越慢。
上面的regexp可能会优化得更好。
7uhlpewt2#
首先,你应该减少范围,
a-zA-Z0-9_
到\w
,它是相同的模式。当您到达电子邮件地址中的
.
时,请使用负向前瞻。[-.\w]+@[-.\w]+\.(?!png)[-.\w]+
。