Javaの正規表現における文字クラスについて
Javaでは、正規表現を使用して文字列を検索、置換、検証することができます。文字クラスはその中で特定の文字セットを指定するために使用され、非常に強力な機能を提供します。このページでは、Javaにおける文字クラスの詳細について解説します。
基本的な文字クラス
文字クラスを使用すると、指定したセットのいずれかの文字と一致します。基本的な形式は角括弧 [] で囲む方法です。
Pattern pattern = Pattern.compile("[abc]");
上記の例では、a, b, c のいずれかに一致します。
例:
- 入力文字列 “apple” →
aに一致 - 入力文字列 “banana” →
a,bに一致 - 入力文字列 “cherry” →
cに一致
事前定義された文字クラス
Javaの正規表現には、よく使用される文字セットを表現するための事前定義された文字クラスがあります。
\d: 数字(0-9)に一致\D: 数字以外の文字に一致\w: 単語構成文字(アルファベット、数字、アンダースコア)に一致\W: 単語構成文字以外に一致\s: 空白文字(スペース、タブ、改行など)に一致\S: 空白文字以外に一致
例:
Pattern pattern = Pattern.compile("\\d"); // 数字を探す
- 入力文字列 “abc123” →
1,2,3に一致 - 入力文字列 “hello” → 一致なし
カスタム文字クラス
角括弧内に任意の文字を指定して、カスタムの文字クラスを作成できます。
Pattern pattern = Pattern.compile("[aeiou]");
この例では、母音に一致します。
例:
- 入力文字列 “apple” →
a,eに一致 - 入力文字列 “grape” →
a,eに一致
否定された文字クラス
角括弧内でキャレット(^)を使用すると、指定した文字以外に一致します。
Pattern pattern = Pattern.compile("[^aeiou]");
この例では、母音以外の文字に一致します。
例:
- 入力文字列 “apple” →
p,p,lに一致 - 入力文字列 “grape” →
g,r,pに一致
範囲指定の文字クラス
文字クラス内でハイフン(-)を使用すると、文字の範囲を指定できます。
Pattern pattern = Pattern.compile("[a-z]");
この例では、小文字のアルファベットに一致します。
例:
- 入力文字列 “Hello123” →
e,l,l,oに一致 - 入力文字列 “123” → 一致なし
エスケープシーケンスの使用
正規表現内で特別な意味を持つ文字(例:., *, +)をそのまま文字として使用する場合、バックスラッシュ(\)を使用してエスケープする必要があります。
Pattern pattern = Pattern.compile("\\.");
この例では、ドット(.)に一致します。
例:
- 入力文字列 “file.txt” →
.に一致 - 入力文字列 “no-dot-here” → 一致なし
応用例
以下は、文字クラスを組み合わせた応用例です。
// アルファベットと数字に一致
Pattern pattern = Pattern.compile("[a-zA-Z0-9]");
// 英字以外の文字に一致
Pattern pattern = Pattern.compile("[^a-zA-Z]");
// 特定の文字列(例:数字、アルファベット、特定記号)を検索
Pattern pattern = Pattern.compile("[A-Za-z0-9@#]");
例:
- 入力文字列 “user@domain.com” →
u,s,e,r,@,d,o,m,a,i,n,c,o,mに一致 - 入力文字列 “!*()” → 一致なし
正規表現を理解し、適切に使用することで、文字列操作を効率的に行うことができます。複雑な要件に合わせてカスタム文字クラスを作成し、柔軟な検索とマッチングを実現しましょう。