正規表現は,特定のパターンを持つ文字列の集合を記述する方式の一つです。「正則表現」と呼ぶこともあります。

 長さが決まっていないテキスト・データの処理を簡潔に記述したい――こんなときに有用なのが正規表現です。Webアプリケーションをはじめ,文字列の入出力を伴うプログラムで利用されます。

 例えば,プログラムの外部から受け取った文字列の形式をチェックするときに,正しい入力形式をあらかじめ正規表現で記述しておけば,その表現に当てはまる(マッチする)かどうかを調べるだけで済みます。長い文字列の中からパターンにマッチする部分だけを抜き出すことも可能です。

 正規表現では,アルファベットや数字などその文字自身にマッチする「リテラル文字」と,特別な意味を持つ「メタ文字」を使います。例えば,リテラル文字だけで記述した正規表現“abc”は文字列abcだけにマッチします。

 メタ文字を組み合わせると,複数の文字列にマッチするように記述できます。例えば,アスタリスク“*”は直前の文字が0回以上繰り返されるパターンを表すメタ文字です。“ab*c”は,ac,abc,abbc…,という具合に,aとcで0個以上のbをはさんだ文字列にマッチします。直前の文字が1回以上繰り返されることを表す“+”や,0回か1回であることを表す“?”もあります。ピリオド“.”は,任意の1文字にマッチするメタ文字です。つまり“. +”は1文字以上のあらゆる文字列にマッチすることになります。

 PerlやPHP,Rubyなどスクリプト言語の多くが,正規表現を使った文字列処理機能を備えています。C/C++やJava,C#などのコンパイラ言語にも,正規表現でテキストを処理するためのライブラリが用意されています。テキスト・エディタのテキスト検索や置換などの機能でも,多くの場合は正規表現を使って操作対象の文字列を指定できます。

 ただし,正規表現では記述できないパターンもあります。例えば,与えた文字列の中で“(”と“)”の対応が取れているかどうかを正規表現だけで調べることはできません。