「入力された値が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かを一瞬で判定する
下書きのコードをベースに、具体的な書き方を見てみましょう。
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]");
}
}
実行結果
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 件のコメント:
コメントを投稿