メインコンテンツにスキップ
モジュール 8 · レッスン 3 / 4コース内の 31/32~12 min
モジュールのレッスン (3/4)

URLとIPの抽出

フリー テキスト (ログ、記事、ダンプ) では、URL を抽出するのが一般的です。 および IP アドレス。両方の堅牢なパターンを見てみましょう。

http/https URL

Code
Pattern: https?:\/\/[\w.-]+(?:\:\d+)?(?:\/[^\s]*)?
  • https?:\/\/ -- スキーム (s はオプション)。
  • [\w.-]+ -- ホスト (ドメイン、サブドメイン、おそらく localhost)。
  • (?:\:\d+)? -- オプションのポート。
  • (?:\/[^\s]*)? -- 最初の空白までのオプションのパス。

https://example.com、http://localhost:3000/api/users、をキャプチャします。 https://docs.dev/path?query=value。

IPv4

IPv4 は、ドットで区切られた 4 つの 10 進数オクテットです。

Code
Pattern: \b(?:\d{1,3}\.){3}\d{1,3}\b

「十分な」 バージョン: 次のような無効な値も受け入れます。 999.999.999.999。 厳密バージョンの場合は、範囲の変更が必要です (25[0-5]|2[0-4]\d|[01]?\d\d?)、これはかなり長いです。

Code
Pattern (strict): \b(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\b

正確さと簡潔さ

URL または IP を一致させるには、バランス パターン許容値が必要です。厳密な IP バリデーターは、255 を超えるオクテットがないことを検証します。一方、実用的なエクストラクターは通常、単純化されたパターンを探し、詳細な検証を専用のコードに委任します。

試してみてください

運動#regex.m8.l3.e1
試行回数: 0読み込み中…

テキスト内のすべての http または https URL を検索します。スキーム + ホスト + オプションのパス。

エディターを読み込み中…
ヒントを表示

https?オプションの s、ドメインの [\\w.-]+、およびグループ (?:\\/[^\\s]*)?オプションのパスの場合。

3 回の試行後に解決策が利用可能になります

復習演習

運動#regex.m8.l3.e2
試行回数: 0読み込み中…

すべての IPv4 (ドットで区切られた 4 つの 10 進数オクテット) を検索します。寛容バージョン、0-255 チェックなし。

エディターを読み込み中…
ヒントを表示

(?:\\d{1,3}\\.){3} を使用して「オクテット + ドット」を 3 回繰り返し、最後に \\d{1,3} を繰り返します。

3 回の試行後に解決策が利用可能になります

追加の課題

運動#regex.m8.l3.e3
試行回数: 0読み込み中…

Find all IPv4 addresses in the format `X.X.X.X` (composed of four 1-to-3 digit numbers separated by dots).

エディターを読み込み中…
ヒントを表示

Use \b to enforce boundaries, (?:\d{1,3}\.){3} to repeat the octet and dot three times, and finally \d{1,3}.

3 回の試行後に解決策が利用可能になります