2026年1月22日木曜日

【Java】if文を減らしてスマートに!正規表現(Regex)のキホンと活用術

 「入力された値がAかBかCのどれかか判定したい」というとき、あなたならどう書きますか?

if (str.equals("A") || str.equals("B")...) と並べるのも一つの手ですが、

Javaにはもっとスマートな方法があります。

それが 「正規表現(Regular Expression)」 です。




1. 正規表現とは?いつからあるの?


Javaで正規表現が本格的に導入されたのは Java 1.4(2002年) です。

それまでは外部のライブラリ(Apache Jakarta OROなど)を使うのが一般的でしたが、標準ライブラリの java.util.regex パッケージが登場したことで、Javaエンジニアにとって必須のスキルとなりました。

正規表現を一言でいうと、**「文字列のパターンを数式のように表現する記法」**です。




2. 実践:AかBかCかを一瞬で判定する


下書きのコードをベースに、具体的な書き方を見てみましょう。

Java
public class Main {
    public static void main(String[] args) {
        System.out.println(isMatch("A")); // true
        System.out.println(isMatch("D")); // false
    }

    /**
     * AかBかCにマッチするかを確かめるサンプル
     */
    static boolean isMatch(String str) {
        // [ABC] は「AまたはBまたはCのいずれか1文字」という意味
        return str.matches("[ABC]");
    }
}

実行結果

Plaintext
true
false



3. なぜ正規表現が便利なのか?


正規表現を使う最大のメリットは、**「複雑な条件を一行で表現できる」**点にあります。

たとえば、以下の条件を if 文で書こうとすると大変ですが、正規表現なら簡単です。

やりたいこと正規表現のパターン
いずれかの1文字[ABC]
aからzまでの小文字[a-z]
任意の数字1文字[0-9] または \\d
3桁の数字\\d{3}

もし正規表現を使わなかったら…

「3桁の数字かどうか」を判定する場合:

  • if文: 文字列の長さをチェックし、1文字ずつ Character.isDigit で判定…(数行必要)

  • 正規表現: str.matches("\\d{3}") (これだけ!)




4. 注意点:使いすぎに注意!


とても便利な正規表現ですが、あまりに複雑なパターンを書きすぎると、後から読んだ時に「暗号」のように見えてしまうことがあります。

  • 単純な比較なら equals

  • **複雑なパターン(郵便番号、メールアドレス、形式チェックなど)**なら 正規表現

このように使い分けるのが、デキるJavaエンジニアへの第一歩です。




5. まとめ


Java 1.4から続くこの強力な機能は、今やWebアプリのバリデーション(入力チェック)などで欠かせない存在です。

まずは今回紹介した [ ] (ブラケット)での文字指定から、少しずつ手になじませていきましょう!





0 件のコメント:

コメントを投稿

【Java】数学の「ラムダ表現」から学ぶJavaラムダ式の実装と制限

Java 8で導入された「ラムダ式」。そのルーツは数学の「ラムダ計算」にあります。数学的な美しさと、Javaの実装における具体的なメリット・制限を整理して解説します。 1. 数学におけるラムダ表現 通常、関数は $f(x) = x + 1$ のように名前を付けて定義しますが、ラ...