Linux

如何從 html 程式碼中解析一些郵件

  • October 30, 2020

我想建構一個小 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:regex@mydomain.com" style="color: rgb(255, 255, 255);"

現在我只想自動檢測這部分:regex@mydomain.com

有人知道嗎?

乾杯

當您只想獲取“mailto:”和“之間的任何內容時,這可以解決問題:

grep -oP '(?<="mailto:)[^"]+(?=")'

它使用Perl 正則表達式語法(-P 標誌)支持的正向後視正向前瞻。

如果您需要對地址進行額外驗證,您可能需要查看此處討論的表達式:https ://stackoverflow.com/questions/201323/how-to-validate-an-email-address-using-a-正則表達式

更新:

如果您不想退回到過於復雜的表達式,這應該可以完成工作:

grep -oP $'[^\'",<>:\\s]+@[^\'",<>:\\s]+'

您可以輕鬆地在方括號內添加其他分隔字元。

更新 2:

如果您還想匹配這樣的內容:regex @ example.com

grep -oP $'[^\'",<>:\\s]+\\s*@\\s*[^\'",<>:\\s]+'

引用自:https://serverfault.com/questions/1040431