Linux
如何從 html 程式碼中解析一些郵件
我想建構一個小 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]+'