我想编写一个小型 bash 脚本来检测 HTML 代码中的某些邮件。目前,我不确定如何构建正确的正则表达式来从 HTML 中自动检测电子邮件。
我尝试使用 curl 来执行这个正则表达式:
egrep -o "\S*@.*\.\S*"
但这包括直到第一个空格的所有非字母字符。
举一个小例子:
</span></p><p class="footertext"><span style="color: rgb(255, 255, 255);">Email </span><br><a href="mailto:[email protected]" style="color: rgb(255, 255, 255);"
现在我只想自动检测这部分:[email protected]
有人知道吗?
干杯
答案1
当你只想获取“mailto:和”之间的任何内容时,这样做就可以了:
grep -oP '(?<="mailto:)[^"]+(?=")'
它用积极回顾和积极展望它由 Perl 正则表达式语法(-P 标志)支持。
如果您需要对地址进行额外的验证,您可能需要查看如下讨论的表达式:https://stackoverflow.com/questions/201323/how-to-validate-an-email-address-using-a-regular-expression
更新:
如果你不想回到过于复杂的表达式,那么这个应该可以完成工作:
grep -oP $'[^\'",<>:\\s]+@[^\'",<>:\\s]+'
您可以轻松地在方括号内添加额外的分隔字符。
更新2:
如果你还想匹配这样的内容:regex @ example.com
grep -oP $'[^\'",<>:\\s]+\\s*@\\s*[^\'",<>:\\s]+'