解説
正規表現は文字列のパターンを表現する方法です。検索や置換で用いられて、複雑な条件で文字列に一致させることが可能です。正規表現では、メタ文字、メタキャラクターと呼ばれる記号を使い、文字を抽象化して出現パターンを記します。
この正規表現は、多くのプログラミング言語や、テキストエディタで利用できます。使用するプログラミング言語などの環境によって、微妙に仕様が違うので、使用前に確認が必要です。本記事では、JavaScriptの正規表現を中心に扱います(他のプログラミング言語の正規表現も、大きな差はありません)。
今回は、その正規表現の中から、複数の文字のいずれでもよいという1文字を示す「文字セット」について紹介します。この「文字セット」は「クラス」とも呼ばれます。
文字セットは、角カッコを使って書きます。角カッコの中に、複数の文字を書き、そのいずれかであるという1文字を示します。
記述 | 意味 |
---|---|
[abcd] | 「a」か「b」か「c」か「d」 |
[あいう] | 「あ」か「い」か「う」 |
[nNん] | 「n」か「N」か「ん」 |
[、。\n] | 「、」か「」か「\n」(改行) |
また、「-(ハイフン)」を使うことで、文字コードの範囲を示すことも可能です。
記述 | 意味 |
---|---|
[a-x] | 「a」か「b」か……「x」 |
[ぁ-ん] | 「ぁ」か「あ」か……「ん」ひらがな全範囲 |
[ァ-ヶ] | 「ァ」か「ア」か……「ヶ」カタカナ全範囲 |
これらの書き方は、混在させることも可能です。
記述 | 意味 |
---|---|
[a-dxyz] | 「a」か「b」か…「d」、あるいは「x」か「y」か「z」 |
[ぁ-んァ-ヶ] | ひらがな全範囲とカタカナ全範囲 |
[ァ-ヶー] | 「ァ」か「ア」か……「ヶ」のカタカナ全範囲に長音符 |
このようにして書く文字セットは、繰り返しなどを示す、他の正規表現の記法と混ぜて書くことができます。
記述 | 意味 |
---|---|
[aiueo]{3,} | 母音のアルファベットを3回以上繰り返し |
また、文字セットを利用することで、改行を含んだ任意の一文字を示すこともできます。
記述 | 意味 |
---|---|
[.\n] | 「.」改行以外の任意の1文字と「\n」改行 |
あるいは
記述 | 意味 |
---|---|
[\s\S] | 「ホワイトスペースにマッチ」と「ホワイトスペース以外にマッチ」(つまり全部の文字) |
サンプル
正規表現で「文字セット」を利用したコードを、JavaScriptで簡単に書いてみます。
<html> <head> <title>「文字セット」のサンプル</title> </head> <body> <pre><script type="text/javascript"> // 「!」や「?」を「」に置換 var str = "人生とは何だ!?\n友情!!\n努力!!!\n勝利!!!!"; document.writeln("str1 : \n" + str); str = str.replace(/[!?]+/g, "。"); // 「/[!?]+/g」で、 // 「!」か「?」の繰り返しを // 「g」すべて // という意味 document.writeln("\nstr2 : \n" + str); </script></pre> </body> </html>
str1 : 人生とは何だ!? 友情!! 努力!!! 勝利!!!! str2 : 人生とは何だ。 友情。 努力。 勝利。