JavaのPatternクラスpattern()メソッドの使い方を実例で解説
Javaのjava.util.regexパッケージには、文字シーケンスの中から特定のパターンを検索するためのクラスが多数用意されています。その中でもPatternクラスは、正規表現をコンパイルした結果を表すクラスであり、正規表現によるマッチング処理の出発点となる存在です。
このPatternクラスが提供するpattern()メソッドは、現在のパターンオブジェクトを生成する際に使用された正規表現そのものを、文字列(String)形式で取得して返します。
メソッドの構文
public String pattern()
引数は不要で、呼び出すだけでコンパイル済みの正規表現源文字列をそのまま受け取れるシンプルなメソッドです。
例1:日付形式の検証でpattern()を使う
次のサンプルでは、日付文字列が「MM/dd/yyyy」形式として妥当かどうかを正規表現で判定し、その後、pattern()メソッドによって使用中の正規表現を取り出して表示しています。
import java.util.regex.Pattern;
public class PatternExample {
public static void main(String[] args) {
String date = "12/09/2019";
String regex = "^(1[0-2]|0[1-9])/(3[01]|[12][0-9]|0[1-9])/[0-9]{4}$";
// パターンオブジェクトを作成
Pattern pattern = Pattern.compile(regex);
if(pattern.matcher(date).matches()) {
System.out.println("日付は有効です");
} else {
System.out.println("日付は無効です");
}
// 現在のパターンの正規表現を取得
String regularExpression = pattern.pattern();
System.out.println("正規表現: " + regularExpression);
}
}
出力結果
日付は有効です
正規表現: ^(1[0-2]|0[1-9])/(3[01]|[12][0-9]|0[1-9])/[0-9]{4}$
このように、Pattern.compile()に渡した正規表現が、pattern()メソッドによって完全な形で復元されていることがわかります。
例2:グループを含む正規表現での使用例
続いて、キャプチャグループを含む正規表現を使った例です。入力文字列がパターンにマッチするかを判定した後、pattern()メソッドで正規表現を取得して表示します。
import java.util.regex.Pattern;
public class PatternExample {
public static void main(String[] args) {
String input = "Hi my id is 056E1563";
// グループを使用した正規表現
String regex = "(.*)?(\\d+)";
// パターンオブジェクトを作成
Pattern pattern = Pattern.compile(regex);
if(pattern.matcher(input).matches()) {
System.out.println("マッチしました");
} else {
System.out.println("マッチしませんでした");
}
// 現在のパターンの正規表現を取得
String regularExpression = pattern.pattern();
System.out.println("正規表現: " + regularExpression);
}
}
出力結果
マッチしました 正規表現: (.*)?(\d+)
まとめ
pattern()メソッドは、Pattern.compile()に渡した正規表現を後から参照したい場合に非常に便利です。デバッグ時の確認やログへの出力、プログラム内で動的に組み立てた正規表現の中身を検証する際などに活用するとよいでしょう。
-
JavaのMatcher.matches()メソッドとは?使い方をサンプルコード付きで解説
java.util.regex.Matcherクラスは、正規表現を用いたさまざまなマッチ操作を実行するエンジンを表すクラスです。このクラスにはコンストラクタが用意されておらず、java.util.regex.Patternクラスのmatcher()メソッドを使ってオブジェクトを取得します。 matches()メソッドは、対象の文字列全体が、Patternオブジェクトの作成時に指定された正規表現パターンと一致するかどうかを判定します。一致する場合はtrueを返し、一致しない場合はfalseを返します。重要なポイントとして、このメソッドがtrueを返すためには、検索対象の領域全体がパターンに一致し
-
JavaのMatcherクラスstart()メソッドとは?サンプルコード付きで解説
java.util.regex.Matcherクラスは、正規表現を用いたさまざまなマッチ操作を実行するエンジンを表すクラスです。このクラスにはコンストラクタが用意されておらず、java.util.regex.Patternクラスのmatcher()メソッドを使用することで、Matcherオブジェクトを取得できます。 Matcherクラスのstart()メソッドは、直前にマッチした文字列の開始インデックス(先頭からの位置)をint型で返します。 start()メソッドの基本的な動作 正規表現における文字クラス「[...]」は、括弧内に指定したいずれか1文字に一致します。以下の例では、この文字クラ