本文へスキップ
BecomeCoder

正規表現コース · 第1章 正規表現をはじめる · レッスン3

エスケープ ― 記号を「ただの文字」として扱う

ブラウザで完結

導入

. が「任意の1文字」だとすると、では「本物のピリオド(.)」を探したいときはどうすればよいのでしょう。ここで登場するのが エスケープ です。メタ文字の前にバックスラッシュ \ を置くと、その特別な意味を打ち消して「ただの文字」として扱えます。

説明

\ は「次の1文字の意味を変える」メタ文字です。メタ文字の前に付けると、記号を文字そのものの意味に戻します。

パターン: 3.14      対象: 3x14   → マッチする(. が任意の1文字なので x でもOK)
パターン: 3\.14     対象: 3x14   → マッチしない(\. は本物のピリオドだけ)
パターン: 3\.14     対象: 3.14   → マッチする

エスケープが必要になる代表的な文字は . ^ $ * + ? ( ) [ ] { } | \ などです。たとえば URL の中のドットや、金額の $、末尾の ? などをそのまま探したいときに使います。

パターン: \$100     対象: 合計は$100です  → "$100" にマッチ
パターン: \(税込\)  対象: 500円(税込)      → "(税込)" にマッチ

逆に、\ の後に ふつうの英字 を続けると、また別の特別な意味(\d は数字、\s は空白 …)になります。これは次章で詳しく扱います。つまり \ は「意味を打ち消す」だけでなく「新しい意味を与える」二役の記号だと覚えておきましょう。

文字列の中では \ が二重になることも プログラムのソースコード中で正規表現を文字列として書くと、言語によっては \ 自体を \\ と二重に書く必要があります(例:Java や JSON)。「正規表現としてのパターン」と「文字列としての書き方」は別物、と意識しておくと混乱しません。

やってみよう

. $ ( ) などの記号を「そのままの文字」として探したいときは、前に \ を付ける ―― この一点をおさえておきましょう。次章から、いよいよ正規表現らしい「文字の指定」に入っていきます。

実際に動かしてみよう

パターン欄に正規表現を、下の「テスト文字列」欄に対象の文字列を入れると、マッチした部分がその場でハイライトされます(ブラウザ標準の正規表現エンジンで動きます)。フラグ(g/i/m/s)を切り替えたり、本文のパターンを書き換えたりして、マッチの変化を確かめながら進めましょう。

正規表現 — その場でマッチを確認

ブラウザ標準の正規表現エンジンでパターンを試せる学習用ウィジェットを読み込みます(外部エンジン不要・軽量です)。
スクロールして表示された時点でも自動で読み込まれます。