正規表現 -saka

Javaでの正規表現を使用した検索の仕方。

①まず、正規表現のパターンをインスタンス化する。
Pattern p1 = Pattern.compile("パターン");
(PatternクラスのcompileというstaticメソッドにパターンのStringを引数で渡し、戻り値をPatternクラス変数に代入する。)

②次に検索対象の文字列とパターンから、マッチング状態をインスタンス化する。
Matcher m = p1.matcher("検索対象文字列");
(Patternクラスのstaticメソッドmatcherに、検索対象文字列を引数として渡すとMatcherクラスのオブジェクトを返してくる。)

Patternクラスというのは文字列を持てるという点でStringクラスに似ているかも。任意の文字列をもったStringクラスにequalsメソッドを使うようなイメージで、Patternクラスにmatcherメソッドを使う。
String.equalsでは単純にbooleanが返ってくるけど、Pattern.matcherで返ってくるのは正規表現エンジンというMatcherクラスのオブジェクトになる。
正規表現エンジンというのがよくわからないけど、equalsが完全一致のYes/Noだけでよかったのに対してmatcherは検索なので、ひとつめにマッチした文字位置とか、引き続き検索を続けるとか、必要とされる情報や機能がいろいろあるためもう一発オブジェクトを挟んでいるようなイメージ。

③うえの1.2.の手順で作成された正規表現エンジンに対して、いろんなメソッドを使っていろんな検索ができますよ。
if (m.find()){
System.out.println("マッチしました");
}
(Matcherクラスのfindメソッドは、Matcherクラスオブジェクトが持つ検索対象文字列に検索パターンが含まれるかどうかをbooleanで返す。同時におそらく内部にマッチしたテキストの位置情報を持っていて連続検索することができる。findメソッドを実行するたびに次々と検索する。)