【Java学習|初心者向け】Javaで学ぶ正規表現入門:Character Class [abc] を使いこなそう

1. 導入:なぜ正規表現の「文字クラス」が重要なのか

Javaで文字列を操作する際、「特定の文字のいずれかが含まれているか確認したい」という場面は非常に多いです。例えば、ユーザー名に特定の禁止文字が含まれていないかチェックしたり、ログデータから特定の形式のコードを抽出したりする場合です。正規表現の「文字クラス」を使えば、複雑なif文を何重にも書く必要がなくなり、たった数行で強力な文字列判定が可能になります。今回は、正規表現の基本である「文字クラス [abc]」について解説します。

2. 基礎知識:[abc] とは何か

正規表現において、角括弧 [ ] で囲まれた部分は「文字クラス」と呼ばれます。その中に指定した文字の「いずれか1文字」にマッチするという意味を持ちます。
例えば、[abc] と書くと、「a、b、c のどれか一文字」という意味になります。
・「a」にマッチする
・「b」にマッチする
・「c」にマッチする
・「ab」や「d」にはマッチしない

これは「OR条件」を簡潔に書くための仕組みです。また、[a-z] のようにハイフンを使うことで範囲指定(aからzまでのいずれか)も可能です。

3. 実装:Javaでの正規表現の扱い方

Javaでは、java.util.regex.Pattern クラスと java.util.regex.Matcher クラスを使用して正規表現を扱います。
1. Pattern.compile(“正規表現”) でパターンを定義します。
2. matcher(対象文字列) でマッチングの準備をします。
3. find() や matches() メソッドで判定を行います。

4. サンプルプログラム

以下のコードをコピーして、ご自身の環境で試してみてください。

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

public class RegexSample {
public static void main(String[] args) {
// [abc]は「a, b, cのいずれか」にマッチ
String regex = “[abc]”;
Pattern pattern = Pattern.compile(regex);

String[] testStrings = {“apple”, “banana”, “cherry”, “dog”};

for (String str : testStrings) {
Matcher matcher = pattern.matcher(str);
// find()は文字列の中にマッチする部分があるか確認します
if (matcher.find()) {
System.out.println(str + ” には a, b, c のいずれかが含まれています。”);
} else {
System.out.println(str + ” には含まれていません。”);
}
}
}
}

5. 応用・注意点:現場での活用と罠

実務では、単なる文字チェックだけでなく、Named groups(名前付きグループ)を組み合わせることがよくあります。例えば、(?[abc]) という書き方をすると、マッチした箇所に「target」という名前を付けて後から取り出すことができます。

注意点として、[abc] は「1文字」しかチェックしないという点です。もし「abcという文字列そのもの」を探したい場合は、[abc] ではなく単に “abc” と書く必要があります。また、角括弧の中で「-(ハイフン)」や「^(否定)」を使う場合は、記述順序や位置によって意味が大きく変わるため、正規表現の仕様をしっかり確認する癖をつけましょう。

まずは [abc] のような短いパターンから慣れていき、徐々に複雑な検索に挑戦してみてください!

コメント

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