2012-03-14 12 views
0

で特定の電子メールアドレスを除外:は、私が正常に動作した電子メールを抽出するため、この正規表現を持っている正規表現

([a-zA-Z][\w\.-]*[a-zA-Z0-9])@([a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]) 

は、しかし、私は次のように含めたくないいくつかのメールがあります

[email protected] 
[email protected] 
[email protected] 

私は^(?! server | noreplay | name)のようなものを追加しようとしていますが、動作していません。

また、上記のようにカッコを使用すると、(名前、ドメイン)を持つ完全なタプルになりますか?あなたがそれらを抽出した後、あなたは続けて、リスト上のforループを行うことができないので

+5

regexで確認する前/直後に禁止されたアドレスを確認してください。これには正規表現は必要ありません。 – Czechnology

+1

2番目の@Czechnology ...私はあなたが現在の正規表現にそのようなものを試してみるべきではないと思います - それらの電子メールをテストする別の正規表現を持つ方がはるかに良いでしょう – Eric

+0

BTWあなたの元の正規表現は認識できません多くの有効な電子メールアドレス。たとえば、コメントセグメントまたは「+」文字を含む任意のユーザ名のメールは、[RFC](http://tools.ietf.org/html/rfc2822)のアドレスは有効ですが、一致しません[私はRFCを読むまでメールアドレスを検証する方法を知っていた](http://haacked.com/archive/2007/08/21/i-knew-how-to-validate-an-email-address-until-i .aspx) – dbenhur

答えて

0

悪質な電子メールリストに一致する電子メールがあれば、正規表現の結果を確認してください。

results = list_from_your_regex 
invalids = ['info', 'server', 'noreply', ...] 
valid_emails = [good for good in results if good.split('@')[0] not in invalids] 
1

だけで、あなたは電子メール(emails[:])のスライスをしなければならない...それらのメールアドレスを

bad_addresses=['[email protected]', '[email protected]', '[email protected]'] 
emails=re.findall('[a-zA-Z][\w\.-]*[a-zA-Z0-9])@([a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]', contentwithemails) 

for item in emails[:]: 
    if item in bad_addresses: 
    emails.remove(item) 

をチェックサイズの変更。これにより、実際のリストが動作している間に読むことができる "ゴースト"リストが作成されます。

関連する問題