2016-04-15 6 views
1

ソースコードのセットから電子メールアドレスを再正規化しようとしています。データは、<a href>タグの属性として見つけることができます。これは次のとおりです:data-email="[email protected]"HTMLからの電子メールの正規表現

私はかなり正規表現に新しいとこれを思い付いた:/\w+\s*=\s*".*?"/しかし、それは動作していないようです。それの周りに私の頭を上げることはすべて難しいです。

私は何ができますか?

ありがとうございました。

+0

はあなたにもいくつかの例を投稿してもらえますか? – AKS

+0

可能性のある複製http://stackoverflow.com/questions/28888194/extract-emails-from-html-using-regex?rq=1 – Ashish

+1

[Regexで電子メールアドレスの検証を停止する](https://davidcel.is/posts)/stop-validating-email-addresses-with-regex /) –

答えて

2

ソースコードがHTMLであれば、HTMLパーサーを使用する方が簡単ではないでしょうか?あなたは、例えば、lxml使用することができます

from lxml import etree 

html = etree.HTML(""" 
<html> 
    <head> 
     <title>History of Roundish Stones in the Paleozoic Era</title> 
    </head> 
    <body> 
     <a href="#" data-email="[email protected]">Andrew S. Johnson</a> 
     <a href="#" data-email="[email protected]">E. Idle</a> 
    </body> 
</html> 
""") 

print(html.xpath('//@data-email')) 

この版画:

['[email protected]', '[email protected]'] 
0

私が正しくあなたの質問を取得する場合、これはあなたが電子メールアドレスを抽出する必要があるかもしれないものである:

>>> import re 
>>> print(re.findall(r'(?<=data-email=")[^"]*(?=")', '<b><a href="/abcd.html" data-email="[email protected]">abcd</a></b>')) 
['[email protected]'] 
0

をあなたは以下のように使用して電子メールアドレスを取得することができます。 私はいくつかの例を投稿することができれば、あなたがそれを扱っているものが何であるか分かりません。しかし、これを試すことができます、それはあなたを助けるかもしれません。

re.compile("([\w\-\.][email protected](\w[\w\-]+\.)+[\w\-]+)") 

これは、あなたが得るのを助ける"[email protected]"

0

BeautifulSoupはあなたの友達です:

from bs4 import BeautifulSoup as BS 

emails = [] 
soup = BS(html_string, 'html5lib') 
for a in soup.findAll('a'): 
    try: 
     emails.append(a['data-email']) 
    except KeyError: 
     continue 
関連する問題