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」のような基本から使いこなして、シンプルで堅牢なコードを書いていきましょう!

コメント