Javaで正規表現チェック

正規表現

正規表現とは

様々な文字列を一つの文字列で表現する表記法

なぜ便利なのか

正規表現を利用すると様々な文字列を一つの文字列で表現できるため、文字列の検索や置換が便利になる。
例えば、以下の文字列は全て同じ正規表現で表すことができる。

apple
orange
grape
lemon
[a-z]+

基本的な正規表現の記法については以下のページを参照:

murashun.jp

Java正規表現を使用する

PatternクラスとMatcherクラスを使用する。
Pattern#compile()メソッドの引数に検証したい正規表現を与える。
作成したPatternのインスタンスからMatcherを作成する際に、検証対象の文字列を引数で与える。

Pattern pattern = Pattern.compile("^[A-Za-z0-9]+$");
Matcher matcher = pattern.matcher("value");
matcher.matches(); // true

置換

文字列の中の、特定のパターンの文字列を別の文字列に置き換える

String str = "あかまきがみあおまきがみきまきがみ" ;
String pattern = "がみ" ;
Pattern p = Pattern.compile(pattern);
Matcher matcher = p.matcher(str) ;
String newStr = matcher.replaceAll("紙");
System.out.println(newStr);

検索

ある文字列の中から、特定のパターンの文字列を探しだす

String str = "あかまきがみあおまきがみきまきがみ" ;
String pattern = "がみ" ;
Pattern p = Pattern.compile(pattern);
Matcher matcher = p.matcher(str) ;
while(matcher.find()){
    int start = matcher.start();
    System.out.println(start + "番目に見つけました");
}

分割

文字列の中から、特定のパターンで区切る

String str = "あかまきがみあおまきがみきまきがみ" ;
String pattern = "がみ" ;
Pattern p = Pattern.compile(pattern);
for(String substr : p.split(str)){
    System.out.println(substr); // あかまき, あおまき, きまき
}

グループ

正規表現で定義したグループ(() で囲われた部分)について参照するには、以下のメソッドが用意されている

  • groupCount() :正規表現で定義されたグループの数を取得する
  • group() :直近のマッチ操作でマッチした文字列全体を取得する
  • group(int) :直近のマッチ操作でマッチしたグループのうち、指定したインデックスのグループを取得する

group(int)メソッドにおいて、番号 0 はマッチした文字列全体なので、 group() と同じ結果を返す。
1 から先がマッチした部分文字列になる。

Java正規表現の動作確認には以下のサイトが便利:

regex-testdrive.com