テキストおよび日常ツール · テキスト ツールキット
URL と電子メールの抽出でアドレスの終わりを認識する方法
· 仕組み
テキスト抽出 URL メールアドレス
散文からリンクとアドレスを抽出する際の 2 つの難しい決定 (URL がどこで停止するか、および電子メール パターンをどの程度厳密にするか) と、実際的なパターンが実際のテキストで完全な RFC 文法に勝る理由を検討します。
ピリオドが貼り付けられたリンク — 単純な抽出で https://example.com. が返され、リンクが切断される理由
会議メモでは、文の最後に便利なリンクが置かれることがよくあります。 `Agenda: https://example.com/roadmap.` スペース以外のすべての文字を受け入れる検索には、最後のピリオドが含まれます。表示されるテキストは妥当に見えますが、抽出された値は、作成者が共有または再訪問することを意図したアドレスと一致しなくなりました。
ToolAcre は、まず HTTP または HTTPS シーケンスを検索し、その後、末尾のピリオド、コンマ、セミコロン、コロン、感嘆符、および疑問符を削除します。クリーンアップは、ドキュメント全体に適用されるのではなく、意図的に一致境界に付加されます。 URL 内の他の場所の句読点は、最初のパターンで許可されている場合は引き続き使用できます。
ピリオドが添付されたリンク: 抽出時に末尾の句読点を除外する必要がある理由
URL パターンは `http://` または `https://` でのみ始まり、空白またはいくつかの終了区切り文字のいずれかが表示されるまで続きます。引用符、山括弧、右括弧、右角括弧はすべて一致を停止します。このルールにより、`(https://example.com/notes)` などの散文は、括弧を付けずにアドレスを返すことができます。
これは実用的な境界ルールであり、考えられるすべての URI に対する一般的なパーサーではありません。開き括弧は一致内に残り、閉じ括弧は一致を終了するため、その文字が実際に含まれるパス自体のアドレスは短縮される可能性があります。抽出機能は一般的な散文の境界を優先し、珍しいケースは手動でレビューする必要があります。
電子メールのマッチングはどの程度厳密であるべきか — RFC 5322 が技術的に許可していること、およびそのすべてをマッチングすると実際のテキストで悪い結果が生じる理由
電子メール抽出でも同様のトレードオフが発生します。 `@` の前の文字、数字、およびよく知られたメールボックスの句読点を検索し、その後にドットと少なくとも 2 文字が続くドメインのようなシーケンスを検索します。このパターンは、完全な電子メール文法で認められているすべての構造を再現しようとすることなく、メモに埋め込まれた通常のアドレスを捕捉します。
抽出と検証では異なる質問に答えられるため、より狭いパターンが役立ちます。抽出により、非構造化テキスト内の可能性のある連絡先詳細が特定されます。メールボックスが存在すること、メールを受け入れること、または指定された個人に属していることを確立するものではありません。特に句読点や珍しいメールボックス構文が近くにある場合は、結果を確認可能なリストとして扱います。
重複除外と順序 — 各アドレスのコピーを 1 つずつ、最初に出現した順に作成するため、リストはソースを反映します。
URL と電子メール アドレスの場合、ToolAcre は `Set` を使用して重複を削除します。 JavaScript セットは挿入順序を保持するため、最初に出現した項目が結果内で項目が表示される場所を決定し、その後の同一の一致は消えます。したがって、出力は、許可なく連絡先やリンクをアルファベット順に並べるのではなく、ソースを上から下にたどります。
等価性は正確です。 `https://example.com` と `https://example.com/` は、大文字と小文字が異なる電子メール アドレスと同様に、別々のままです。エクストラクターは、ドメインを正規化したり、URL フラグメントを削除したり、2 つの宛先が同等であると判断したりしません。これらの変更は意図的に異なるテキストをマージする可能性があるため、さらなる正規化は別のチェックされたステップに属します。
数字も — 散文から数値を引き出す、そしてなぜ小数点や千の区切りが「数字」を思ったほど分かりにくくするのか
数値抽出では、オプションのマイナス記号、1 つ以上の数字、およびピリオドによって導入されたオプションの小数部分を受け入れます。散文から `-12`、`48`、および `3.75` を取得できます。 URL や電子メールの抽出とは異なり、すべての一致が直接返されるため、繰り返される値は繰り返されたままとなり、出現回数が保持されます。
グループ化およびローカライズされたフォームは、そのコンパクトなルールの限界を明らかにします。 `1,250` は `1` および `250` として返されますが、`3,5` も 10 進数のカンマとして解釈されずに分割されます。通貨記号、指数、および先頭のプラス記号は一致の一部ではありません。抽出された数字に意味を割り当てる前に、近くのテキストを読んでください。
数値も: グループ化された値を 1 つの数値として扱うことなく、符号付き整数と小数を使用できます。
これらのメモを試してください: `Email sam@example.com, then review https://example.com/plan. Backup: sam@example.com. Budget -12.5; seats 24. Reference (https://example.com/help).` 電子メールを抽出すると 1 つの `sam@example.com` が返されます。 URL を抽出すると、文のピリオドや右括弧を除いたプランとヘルプのアドレスがこの順序で返されます。
手動スキャンでは、電子メールの出現が 2 つ見つかりますが、一意の電子メール結果が 1 つ、別個の URL の出現が 2 つ、数値の一致が 2 つ見つかります。数値を抽出すると `-12.5` および `24` が返されます。例のドメイン内の数字は存在しないため、一致は追加されません。このチェックでは、重複が排除された連絡先リストとリンク リストから出現数が分離されます。
これでカバーされないもの — アドレスが実際に存在することの検証、およびプラグマティック パターンが見逃す珍しいが有効なアドレス
一致する電子メールは、実装されたパターンのような形のテキストのみです。 ToolAcre は、メール サーバーに問い合わせたり、テスト メッセージを送信したり、ドメイン レコードを検査したりしません。したがって、一見もっともらしいタイプミスは抽出に合格する可能性がありますが、一般的ではないが使用可能なアドレスは見逃される可能性があります。リストに頼る前に、適切な信頼できるチャネルを通じて重要な連絡先を確認してください。
URL 抽出も同様に、ページの要求、リダイレクトの追跡、宛先が安全か利用可能かどうかのテストを行いません。また、明示的な HTTP または HTTPS プレフィックスも必要であるため、裸の `example.com` は返されません。これらの制限により、抽出はローカルで予測可能に保たれますが、結果として生じるワークフローには人間によるレビューが含まれます。
重要な点 — Text Toolkit の抽出ボタンはこれらのトレードオフを明示的に行い、ブラウザーにクリーンで重複を排除したリストを提供します。
抽出ボタンは、ブラウザ内で散文の混合ブロックを改行で区切られた一致に変換します。 URL と電子メールは実用的なパターンを使用し、一般的な散文の境界でトリミングまたは停止し、最初に見つかった順序で一意の値を返します。数値は、より小さい符号付き 10 進数パターンを使用し、重複を保持します。これは、1 つの汎用抽出ポリシーではなく、異なる関数規約を反映しています。
必要なメモのみを貼り付け、URL の抽出とメールの抽出を別々に実行し、コピーする前に各リストをソースと比較します。クリーンな出力により反復的なスキャンが不要になり、文書化された境界により判断が必要な部分が示されます。構文が特殊な場合は、レビュー中に元の文章を抽出結果の横に保管してください。