(1) Javaで正規表現を使ってURLを文字列から検出する方法
(1-1) 構文
(1-2) 構文の説明
(1-3) サンプルプログラム
(1-4) ツールのご紹介
(1) Javaで正規表現を使ってURLを文字列から検出する方法
(1-1) 構文
URLを検知するための正規表現として、以下の例をご紹介します。
(正規表現)
\\b(https?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]
(1-2) 構文の説明
①「\\b」
「\b」は英語では「word boundary」と呼ばれ、単語と単語の境界とマッチします(例えば、単語の最初or最後とマッチする)。更にJavaのString型で「\」をエスケープするために、更に「\」をもう一つ付けて「\\b」としています。
②「(https?|ftp|file)://」
\\b(https?|ftp|file)://
③「[-a-zA-Z0-9・・(中略)・・]」
正規表現①:「[-a-zA-Z0-9:/.]*」
\\b(https?|ftp|file)://[a-zA-Z0-9+&@#/%?=~_|!:,.;]*
⇒「https://developer.mozilla.org/en」までしか抽出できず・・
正規表現②:「[a-zA-Z0-9:/.]*」
\\b(https?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*
⇒「https://developer.mozilla.org/en-US/」まで抽出できる!
(図123)
④「[+&@#/%?=~_|!:,.;]」
⑤「[何かの正規表現]*」
(1-3) サンプルプログラム
別記事「Javaで正規表現の使い方をご紹介」にて、正規表現のサンプルプログラムをご紹介していますので、こちらをご参照頂けたらと思います。構造はほぼ同じで、唯一「String regex = XXXXX」の部分を下記に置き換えるのみです。
String regex = "\\b(https?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]";
(1-4) ツールのご紹介
今回は正規表現を素早くテストするためにMozillaの無料で使えるサイトを利用しました。検索文字列と正規表現の部分を変えて実行するだけで、素早く正規表現のテストを行えます。
(URL)
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test