2017-10-02 12 views
-1

特定のテキストから電子メールのリストを抽出しようとしています。電子メールのほとんどの構文は次のとおりです。特定のテキストから電子メールを抽出する

"Last_name, First_Name (First-name)" <[email protected]> 
or 
"Last_name, First_Name (XXXX)" <[email protected]> 

私の目標は、「姓、FIRST_NAME(XXXX)」を意味し、最初の部分を含めた全体の電子メールを抽出することです。最初の部分のない電子メールのみを抽出

"(<?[a-z0-9!#$%&*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_`" 
"{|}~-]+)*(@|\sat\s)(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?(\.|" 
"\sdot\s))+[a-z0-9](?:[a-z0-9-]*[a-z0-9]>?)?)" 

は、電子メールのリストを抽出するために、私は次の正規表現を使用していました。

<[email protected]> 

最初の部分を抽出するために正規表現のいくつかのバリエーションを試しましたが、残念ながらそれらは機能しません。

ご意見がございましたら、お気軽にお問い合わせください。前もって感謝します。

+1

「<...>」内に電子メール文字列がありますか?その場合は、単に「<.*?>」を抽出しますか? –

+1

電子メール情報の抽出元となるサンプルメールがありますか?もしそうなら、完全な入力をここに投稿し、出力が何であるべきか正確にお知らせください(複数のフォーマットがあるように見えるので、複数の入力を仮定します)。また、グループに取り込もうとしていますか?名前、姓、電子メールが必要ですか?どのフォーマットで後者が欲しいですか? – ctwheels

答えて

0

まず、次に

「[-ZA-Z _] +のようなものをあなたはその周りに素敵なメモを使って正規表現をテストすることができるリンク

https://regex101.com

をチェックし、 [a-zA-Z_()] + "

最初の部分をキャプチャする必要がありますか?テストテキストを追加できますか?

+0

これはほとんど答えです。https://stackoverflow.com/help/how-to-answerを参照してください。 OPが質問に答えるのに十分なコンテキストを提供していない方法を見て、これは本当にコメントに過ぎないはずです – ctwheels

+0

スタック、私はメインのコメントをコメントすることはできません): –

0
>>> import re 
>>> 
>>> emailLine='"Last_name, First_Name (First-name)" <[email protected]>' 
>>> 
>>> re.findall('^\"([^,]*?),\s([^"]*?)"\s<([^>]*?)>',emailLine) 

[('Last_name', 'First_Name (First-name)', '[email protected]')] 
+0

ありがとう、しかし私は私の行あなたの正規表現を試しましたが、最初のオカレンスしか返しません。 – Djo

+0

各行が同じパターンを持っている場合は、行ごとに反復処理する必要があります。ファイルをリストに変換します。 [これを参照してください](https://stackoverflow.com/questions/3925614/how-do-you-read-a-file-into-a-list-in-python) –

+0

以下の正規表現を使用してください(すべての出現が同じパターンで)行に分割したくない場合は、ファイルのどこにでも一致させることができます。 \ "([^、] *?)、\ s([^ \"] *?)\ "\ s <([^>] *?)> –

関連する問題