【Java学習|初心者向け】Javaの正規表現をマスター!Pattern.matchesを使った簡単文字列チェック術

1. 導入:なぜPattern.matchesが重要なのか

Javaでプログラミングをしていると、「入力された文字列がメールアドレスの形式になっているか」「数字だけで構成されているか」といった判定が必要になる場面が非常に多くあります。これらを細かくif文で書こうとすると非常に複雑になりますが、正規表現(Regular Expression)を使えばわずか1行で解決できます。その中でも、最も手軽に使えるのがPattern.matchesメソッドです。

2. 基礎知識:正規表現とPatternクラスとは

正規表現とは、文字列のパターンを記述するための「ルール」のことです。Javaでは、java.util.regexパッケージに含まれるPatternクラスを使ってこのルールを扱います。
Pattern.matchesは、「指定した正規表現(ルール)」に「対象の文字列」が完全に合致するかどうかをboolean型(true/false)で返してくれる便利なメソッドです。

3. 実装・解決策:どう使い分けるべきか

Pattern.matchesは「一度だけ判定したい」という用途には最適です。しかし、何度も繰り返し判定を行う場合は、毎回パターンをコンパイルするコストがかかるため、あらかじめPatternオブジェクトを生成しておく手法をとります。まずは、基本的な使い方から見ていきましょう。

4. サンプルプログラム:実際に動かしてみよう

以下のコードは、電話番号の形式(ハイフンあり)をチェックする簡単な例です。

import java.util.regex.Pattern;

public class RegexSample {
    public static void main(String[] args) {
        // チェックしたい文字列
        String phoneNumber = "090-1234-5678";
        
        // 正規表現:3桁-4桁-4桁の数字であることをチェック
        // \dは数字を意味し、{n}は回数を指定します
        String regex = "\\d{3}-\\d{4}-\\d{4}";
        
        // Pattern.matchesで一括判定
        boolean isMatch = Pattern.matches(regex, phoneNumber);
        
        if (isMatch) {
            System.out.println("正しい電話番号の形式です。");
        } else {
            System.out.println("形式が異なります。");
        }
    }
}

5. 応用・注意点:現場での賢い使い方

現場で活用する際に、ぜひ覚えておいてほしいポイントが3つあります。

・エスケープに注意する
Javaの文字列の中でバックスラッシュ(\)を扱う場合、もう一つバックスラッシュを足して「\\」と記述する必要があります。正規表現自体のエスケープと混同しがちなので注意してください。

・名前付きグループ(Named Groups)の活用
Java 7以降では、正規表現内でグループに名前を付けられます。例えば (?<area>\d{3}) のように記述すると、マッチング後に「area」という名前で後から値を取り出すことができ、コードの可読性が劇的に向上します。

・パフォーマンスの考慮
もし同じパターンで何万回も判定を行うような処理(ループ内など)がある場合は、Pattern.matchesを繰り返し呼び出すのは避けましょう。事前に Pattern p = Pattern.compile(regex); を行い、p.matcher(input).matches(); を使用することで、処理速度を大幅に改善できます。

まずは簡単なパターンから試し、徐々に複雑な正規表現に挑戦してみてください。これだけで、文字列操作のスキルが一段階レベルアップしますよ。

コメント

タイトルとURLをコピーしました