【Java学習|初心者向け】Java正規表現入門:数字をスマートに見抜く「\d」の使い方

1. 導入:なぜ「\d」を使うのか

Javaでプログラミングをしていると、「入力された文字列が電話番号か?」「郵便番号の形式は正しいか?」といった、特定のパターンを判定したい場面によく遭遇します。
一つずつ文字をループで回して「0から9の間か」をチェックするのは非常に手間ですし、コードも読みづらくなります。ここで登場するのが「正規表現」です。特に「\d」という短い記述を使うだけで、簡単に数字のチェックができるようになります。このTipsを覚えれば、入力チェックのコードが劇的に短く、美しくなりますよ。

2. 基礎知識:正規表現と「\d」の仕組み

正規表現(Regular Expression)とは、文字列のパターンを定義するための特別な記法です。Javaでは主に java.util.regex.Pattern クラスと java.util.regex.Matcher クラスを使って処理します。

「\d」は、数字(0〜9)を表す「文字クラス」の略記法です。
・「d」は「digit(数字)」の頭文字です。
・Javaの文字列リテラル内では、バックスラッシュをエスケープする必要があるため、実際には「\\d」と記述します。

3. 実装:正規表現の使い方

Javaで正規表現を利用する手順は以下の通りです。
1. Pattern.compile(“パターン”) でルールを作成します。
2. pattern.matcher(“対象文字列”) でマッチング対象を指定します。
3. matcher.find()matcher.matches() で判定します。

また、複雑なパターンでは「名前付きグループ」を使うと便利です。例えば「(?

\d{3})」のように記述すると、マッチした数字の一部を「area」という名前で後から取り出すことができます。

4. サンプルプログラム

以下のコードは、文字列の中に数字が含まれているか確認し、名前付きグループを使ってその数字を抽出する例です。

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexExample {
    public static void main(String[] args) {
        // パターン定義: \d は数字1文字。ここでは名前付きグループ「id」として定義
        String regex = "ID:(?<id>\\d+)";
        String input = "ユーザーのID:12345です。";

        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(input);

        // find() で文字列の中からパターンに一致する箇所を探索
        if (matcher.find()) {
            System.out.println("数字が見つかりました!");
            // 名前付きグループ「id」で抽出
            String id = matcher.group("id");
            System.out.println("抽出されたID: " + id);
        } else {
            System.out.println("数字は含まれていません。");
        }
    }
}

5. 応用・注意点:現場でのポイント

実務で正規表現を扱う際に注意すべき点が2つあります。

一つ目はエスケープ処理です。先述の通り、Javaの文字列内では「\」自身を表現するために「\\」と書く必要があります。「\d」と書きたいときは「\\d」、「\w」と書きたいときは「\\w」になることを忘れないでください。

二つ目はパフォーマンスです。ループの中で毎回 Pattern.compile() を呼び出すと、非常に負荷がかかります。定数として private static final Pattern に保持しておくのが、シニアエンジニアとしての「現場の作法」です。

正規表現は強力ですが、複雑にしすぎると可読性が下がります。まずは「\d」のような基本から使いこなして、シンプルで堅牢なコードを書いていきましょう!

コメント

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