インターン2日目です。
今日もいろいろなトラップに引っかかったり、(入力ミスに気付かずに悩んだり)して大変でしたが、なんとかインターンプログラムの基礎編を完了させることができました。
今回は、今日行った内容のうちURLドメイン名部までの抽出について紹介してみたいと思います。
URLのドメイン名の抽出
一般に、URLは
(プロトコル名)://(ドメイン部)/(いろいろ)
と表されます。
※ドメイン名は、サブドメイン、ドメイン、トップドメインを含む
(参照:http://web-tan.forum.impressrd.jp/files/images/seomoz/SEO-Cheat-Sheet.pdf )
例えば、Googleの検索結果は、
https://www.google.co.jp/search?q=%E3%82%B5%E3%83%BC%E3%83%90%E3%83%AB%E3%81%A1%E3%82%83%E3%82%93&biw=1107&bih=776&source=lnms&tbm=isch&sa=X&sqi=2&ved=0ahUKEwjSz6L4zsPSAhXHVLwKHSL_CGQQ_AUIBigB
となっています。
このうち、
(プロトコル名)://(ドメイン部)/
までを正規表現を用いて抽出します。
Javaで正規表現を使う下準備
正規表現を用いたいファイルで以下の2つのクラスを読み込みます。
import java.util.regex.Matcher; import java.util.regex.Pattern;
実際のコード
public String getUrlDomain() { Matcher m = Pattern.compile("(https?://[^/]+/)").matcher(getUrl()); if (m.find()) { return m.group(1); } else { return null; } }
.matcher(getUrl())
部で、getUrl()
によって返された文字列を対象にしていることを表しています。
.compile
内部の正規表現のポイントは以下の通りです。
" ( ), ( ) "
… 与えられた文字列をカッコ()のブロックに分けます。 (下の段にあるgroup(1)
は1つ目のカッコの中身を表しています。)http
s?
…?
直前の1字が0文字または1文字であることを表します。[^/]
… 初めて/(スラッシュ)が現れる直前までの文字列を表します。
このようにして、先述したURLのドメイン部までの文字列を抽出しています。
(参照: 以下のHackを参考にしました。 https://hacknote.jp/archives/13258/ )