問題 8: URLからのデータ解析と抽出

ネットワーク上のファイルやリソースを扱う際、URIやURLに遭遇することがよくあります。これらは直接解析して利用できます。ほとんどの標準ライブラリには、これらの識別子を解析および構築するためのクラスがありますが、ログや大規模なテキストコーパス内でそれらにマッチさせる必要がある場合は、正規表現を使用することで、構造化された形式から情報を簡単に抽出できます。

URI (Uniform Resource Identifier) は、一般的にスキームホストポート (オプション)、およびリソースパスで構成されるリソースの表現です。それぞれ以下にハイライト表示されます。

http://regexone.com:80/page

スキームは通信に使用するプロトコルを記述し、ホストとポートはリソースのソースを記述し、フルパスはソース内のリソースの場所を記述します。

以下の演習では、リストされているすべてのリソースのプロトコル、ホスト、およびポートを抽出してみてください。

演習 8: URLからのデータ抽出
タスク テキスト キャプチャグループ  
キャプチャ ftp://file_server.com:21/top_secret/life_changing_plans.pdf ftp file_server.com 21 To be completed
キャプチャ https://regexone.dokyumento.jp/lesson/introduction#section https regexone.com To be completed
キャプチャ file://:4040/zip_file file localhost 4040 To be completed
キャプチャ https://s3cur3-server.com:9999/ https s3cur3-server.com 9999 To be completed
キャプチャ market://search/angry%20birds market search To be completed
解決策

3つのコンポーネントそれぞれにマッチさせる必要があります。

  • リスト内のプロトコルはすべて英数字であるため、(\w+)://を使用してマッチさせることができます。
  • ホストには、ダッシュやピリオドなどの非英数字が含まれる可能性があるため、://([\w\-\.]+)を使用して、これらの文字を具体的に含める必要があります。
  • ポートはURIのオプション部分であり、コロンが前に付き、(:(\d+))を使用してマッチさせることができます。

すべてをまとめると、完全な正規表現は(\w+)://([\w\-\.]+)(:(\d+))?となり、探しているすべてのデータをキャプチャできます。

上記のタスクを解決して次の問題に進むか、解決策を読んでください。