導入
. が「任意の1文字」だとすると、では「本物のピリオド(.)」を探したいときはどうすればよいのでしょう。ここで登場するのが エスケープ です。メタ文字の前にバックスラッシュ \ を置くと、その特別な意味を打ち消して「ただの文字」として扱えます。
説明
\ は「次の1文字の意味を変える」メタ文字です。メタ文字の前に付けると、記号を文字そのものの意味に戻します。
パターン: 3.14 対象: 3x14 → マッチする(. が任意の1文字なので x でもOK)
パターン: 3\.14 対象: 3x14 → マッチしない(\. は本物のピリオドだけ)
パターン: 3\.14 対象: 3.14 → マッチする
エスケープが必要になる代表的な文字は . ^ $ * + ? ( ) [ ] { } | \ などです。たとえば URL の中のドットや、金額の $、末尾の ? などをそのまま探したいときに使います。
パターン: \$100 対象: 合計は$100です → "$100" にマッチ
パターン: \(税込\) 対象: 500円(税込) → "(税込)" にマッチ
逆に、\ の後に ふつうの英字 を続けると、また別の特別な意味(\d は数字、\s は空白 …)になります。これは次章で詳しく扱います。つまり \ は「意味を打ち消す」だけでなく「新しい意味を与える」二役の記号だと覚えておきましょう。
文字列の中では
\が二重になることも プログラムのソースコード中で正規表現を文字列として書くと、言語によっては\自体を\\と二重に書く必要があります(例:Java や JSON)。「正規表現としてのパターン」と「文字列としての書き方」は別物、と意識しておくと混乱しません。
やってみよう
. $ ( ) などの記号を「そのままの文字」として探したいときは、前に \ を付ける ―― この一点をおさえておきましょう。次章から、いよいよ正規表現らしい「文字の指定」に入っていきます。