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] は「1文字」しかチェックしないという点です。もし「abcという文字列そのもの」を探したい場合は、[abc] ではなく単に “abc” と書く必要があります。また、角括弧の中で「-(ハイフン)」や「^(否定)」を使う場合は、記述順序や位置によって意味が大きく変わるため、正規表現の仕様をしっかり確認する癖をつけましょう。
まずは [abc] のような短いパターンから慣れていき、徐々に複雑な検索に挑戦してみてください!

コメント