メールアドレス抽出ツール

貼り付けたテキストやHTMLからすべてのメールアドレスを抽出 — 重複排除、並べ替え済み、1行に1件、コピーまたはリストとしてダウンロード可能。

1,107回閲覧

仕組み

この抽出ツールは、貼り付けたテキストを正規表現でスキャンし、local-part@domain という形――許可された文字の並び、@記号、そして少なくとも1つのドットを含むドメインという、メールアドレスがほぼ常に書かれる形――を探します。スクレイピングしたWebページ、エクスポートしたメーリングリスト、長いメールスレッドなどを貼り付けると、そのパターンに一致するすべての文字列が抽出され、大文字小文字を区別せずに重複が排除され、アルファベット順に並べ替えられて1行に1件ずつリストされます。これにより、周囲の文章に紛れ込んだアドレス、mailto:リンクのようなHTML属性の中に埋め込まれたアドレス、大きな文書の中の何十もの段落に散らばったアドレスなど、雑然とした実際の入力を追加の手作業なしで処理できます。

ここで使われている正規表現は、有効なメールアドレスとみなされる条件を定めた実際の技術仕様であるRFC 5322の、簡略化された実用的な近似です。これは怠慢による近道ではなく、意図的な選択です:技術的に有効なあらゆるアドレスを漏れなく拾いながら、無効な文字列には決して一致しない、完全にRFC 5322準拠の単一の正規表現を書くことは、事実上不可能に近いのです。完全準拠のパターンは数千文字に及ぶこともあり、"john doe"@example.comのような引用符付きローカル部分や、user@[192.168.1.1]のような角括弧のIPアドレスドメインなど、現実のテキストにはほぼ登場しないまれな合法的なエッジケースにも対応しなければなりません。この抽出ツールを含め、実用的なあらゆる抽出ツールは、その最後のわずか数パーセントの理論的な網羅性を、人々が実際に書く99%以上のアドレスに対して高速・読みやすい・信頼できるパターンと引き換えにしています。

知っておくべきこと

  • 存在ではなく形式が一致するだけです。アドレスは完全に有効に見えても実際には届かない(バウンスする)ことがあります――このツールには、メールボックスが実在し、有効で、メールを受け取れる状態かどうかを確認する手段はありません。
  • 重複は大文字小文字を区別せずに統合されます。[email protected][email protected]は同じアドレスとして扱われ、一度だけリストされます。
  • すべてローカルで実行されます。照合はブラウザ内でJavaScriptにより行われます――テキストがどこかにアップロードされたり保存されたりすることはありません。
  • エッジケースはすり抜けることがあります。スクレイパーを避けるために書かれた「name [at] domain [dot] com」のような難読化されたアドレスは、意図的に標準のメール構文に見えないようにされているため一致しません。
  • 実際の抽出作業のために作られています。スクレイピングしたページから連絡先アドレスを取得する、貼り付けたメーリングリストを整理する、長い転送メールスレッドの中に何件のユニークなアドレスが埋もれているか確認するなどが典型的な用途です。

よくある質問

なぜ完全に正しいパターンではなく「簡略化された」パターンを使うのですか?

完全にRFC 5322準拠の正規表現は、現実のテキストにはほぼ登場しない引用符付きローカル部分やIPアドレスドメインのようなエッジケースをカバーするために、数千文字にもなりうるほど非現実的に複雑だからです。簡略化されたパターンは、高速で予測可能な状態を保ちながら実際のメールアドレスの99%以上を捉えます――それこそが抽出ツールの本来の目的です。

抽出されたアドレスが実際に機能するかどうかを検証しますか?

いいえ。文字列がメールアドレスの形――文字の並び、@記号、ドットを含むドメイン――をしているかどうかを確認するだけです。メールボックスが実在するか、正しく綴られているか、まだメールを受信できるかどうかは、パターン照合ではわかりません。実際の到達可能性を確認するには、実際にテストメールを送信するか、専用の検証サービスを利用する必要があります。

テキスト内の重複したアドレスはどうなりますか?

大文字小文字の組み合わせに関わらず複数回出現するアドレスは同じアドレスとして認識され、最終的な並べ替え済みリストには一度だけ含まれます。

「name at domain dot com」のように書かれたメールも拾いますか?

いいえ――この形式は、自動スクレイパーからアドレスを隠そうとする人々によって意図的に使われるもので、正規表現が探す標準のlocal-part@domain構造には一致しません。通常の構文で書かれたアドレスのみが抽出されます。

貼り付けたテキストはどこかに送信されますか?

いいえ。照合、重複排除、並べ替えを含む抽出処理全体は、JavaScriptを使ってブラウザ内でクライアント側で実行されます。貼り付けた内容がサーバーに送信されたり、保存されたりすることはありません。

コメント

まだコメントはありません — 最初のコメントを書いてみましょう!

関連ツール