正規表現の基本と、ECMAScript(JavaScript)における利用方法を紹介する連載。今回は、正規表現パターンの書き方の基本、代表的な文字クラス、文字集合、数量詞、そしてエスケープについて。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
前回では、ECMAScriptにおける正規表現に関係したクラスやメソッドを紹介しました。そこでは、幾つかの正規表現パターンを例として用いましたが、パターンがどのようなものかについては触れませんでした。ここでは改めて正規表現パターンの基本についてまとめておくことにしましょう。
ECMAScriptにおける正規表現パターンの基本は、正規表現リテラルです。正規表現リテラルは、以下のような形をしています。
/パターン文字列/フラグ
パターン文字列を、スラッシュ(/)で挟みます。この形を見つけると、ECMAScriptは、それが正規表現リテラルであると認識します。フラグは、パターン文字列に対するオプションです(省略可能)。前回の例で度々登場した、gフラグがその代表です。このように、フラグは半角の英文字で表され、多くの場合他のフラグと組み合わせて使うことができます。例えば、以下は極めてシンプルな正規表現リテラルの例です。
const regexp = /[a-c]/g;
正規表現リテラルを変数の初期値に与えるか、RegExpクラスのコンストラクタの引数に与えると、正規表現のオブジェクトを生成できます。正規表現オブジェクトが持つメソッドを用いるか、Stringクラスのメソッドに引数として与えることで、正規表現によるさまざまな検索操作が可能になります。
続けて、パターン文字列の書き方について紹介していきます。パターン文字列には、リテラルとメタ文字が登場します。リテラルとは、次に紹介するメタ文字以外の文字のことです(リテラルとは、「見たまま」という意味です)。例えばabcならabcと、空白を含めて文字の並びが一致するかを調べるときなどに使います。下記の例はリテラルのみからなるパターン文字列です。
const regexp = /England/g;
正規表現においてリテラルのみを使うことはほとんどありません。なぜなら、正規表現を使わないなら、通常の検索や置換を行うsearch()メソッド、replace()メソッド、contains()メソッド、includes()メソッドを使用すればいいからです。リテラルを、次に紹介するメタ文字と組み合わせて使用することで、正規表現ならではの複雑なマッチングが可能になります。
Copyright © ITmedia, Inc. All Rights Reserved.