正規表現:[ ] を使った文字クラスの利用

最終更新:2018-08-10 by Joe

正規表現で角括弧 [ ] を使った文字クラスの表現についてです。

[ ] を使った文字クラス「いずれかの一文字」の表現

正規表現で角括弧 [ ] は特別な意味を持つメタ文字です。[ ] の中身に任意の文字を列挙することで、「カッコの中身の文字のいずれか一文字」というパターンを記述する事ができます。

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です。

正規表現、[ ] に関する参考情報

[] に限らず、基本的な正規表現の基本をまとめています。ぜひご一読ください。