正規表現で角括弧 [ ] を使った文字クラスの表現についてです。
目次
[ ] を使った文字クラス「いずれかの一文字」の表現
正規表現で角括弧 [ ] は特別な意味を持つメタ文字です。[ ] の中身に任意の文字を列挙することで、「カッコの中身の文字のいずれか一文字」というパターンを記述する事ができます。
abcは a, b, c のいずれかの一文字
列挙された文字は、文字列でなく、個々の文字とみなされます。すなわち、[abc]は、a、b か c のいずれかの一文字の例となります。
// 文字クラスを使った盛況源パターン
[abc]+
// マッチする文字列
aaa
abc
acc
文字コード上での範囲の指定
文字クラスのもう一つの特徴は、「-」を使って文字コード上の範囲を指定できる点です。
// 0から9までの範囲の半角数字の連続
[0-9]+
// マッチする文字列
0
12345
数字に限らず、アルファベットや記号も指定することができます。詳しくはこちらも記事もご覧ください
否定の文字クラス [^ ]
^ はカッコ内の冒頭に配置されると、文字クラスを「〜以外の文字」という否定の文字クラスとして利用することが出来ます。
// 123以外の4桁の半角数字文字
[^123]{4}
// マッチする文字列
0000
4444
9876
正規表現の否定にに関しては、こちらにも詳しくまとめています。
[ ] の中でエスケープが必要な文字
文字クラス[ ] の括弧の中では、特殊文字の扱いが通常と異なります。すなわち、基本的なメタ文字は、すべてリテラル(通常の文字)扱いであり、逆に、文字クラスの括弧の中でのみ特別な意味を持つ文字があります。
-(ハイフン)
上述の通りハイフンは、文字コードの範囲を示すために使われます。ハイフンを文字として使用したければ、「\-」で、エスケープする必要があります。
冒頭の「^ 」
これも上述の通り、[^ と冒頭に配置されたときのみ「否定の文字クラス」としての意味になります。この場合もエスケープすれば回避できますが、「^ をリテラルで使いたいときは、カッコ内の冒頭に置かない」というルールのほうが簡単でしょう。
閉じる角括弧「 ]」
簡単に推測できますが、閉じる括弧は文字クラスの終了を意味しますので、リテラルで使いたければ「\]」とすればOKです。
正規表現、[ ] に関する参考情報
[] に限らず、基本的な正規表現の基本をまとめています。ぜひご一読ください。
括弧の中にどんなにたくさん文字を羅列しても、あくまで「一文字」という扱いなんだね。