正規表現でメタ文字をエスケープして通常の文字として扱う

メタ文字として使われるドット(.)や縦棒(|)などはパターンの中で使われると特別な意味を持ちますが、バックスラッシュ(\)を使ってエスケープすることで文字としてマッチさせることができます。ここではメタ文字をエスケープして通常の文字として扱う方法について解説します。

(Last modified: )

メタ文字をエスケープする

ドット( . )やエスチョンマーク( ? )などのメタ文字はパターンの中で記述すると特別な意味を持ちます。これらの特別な文字を一つの文字としてパターンの中で記述するには、文字の前にバックスラッシュ( \ )を記述してエスケープを行います。

\.
\?
\+
\|

例えば次のような正規表現のパターンで考えてみます。

example.com

パターンの中でドット( . )を記述した場合、任意の 1 文字とマッチします。その為、このパターンとマッチする文字列は例えば次のようなものになります。

〇 example.com
〇 example_com
〇 examplePcom

もしドットをメタ文字ではなく文字としてのドット( . )だけにマッチさせたい場合には、ドットの前にバックスラッシュ( \ )を記述してエスケープします。

example\.com

このパターンは "example" 、 "." 、 "com" 、と続く文字列とだけマッチします。

〇 example.com
✕ example_com
✕ examplePcom

このようにメタ文字のとして使用されている文字の前にバックスラッシュ( \ )を記述することで、メタ文字ではなく文字として扱うことができます。

サンプル

JavaScript を使って簡単な正規表現のサンプルを作成してみます。

const regex1 = /example.com/;

regex1.test('example.com');
--> true
regex1.test('example_com');
--> true

const regex2 = /example\.com/;

regex2.test('example.com');
--> true
regex2.test('example_com');
--> false

メタ文字をエスケープする(1)

バックスラッシュ()と文字で改行などの特殊な文字を表現する

改行やタブなど特殊な文字にマッチさせるためにバックスラッシュ( \ )と文字を組み合わせたメタ文字が利用できます。

\f  改ページ
\n  改行
\r  復帰
\t  タブ
\v  垂直タブ

例えば次のような正規表現のパターンで考えてみます。

ABC\nDEF

"ABC" 、 改行 、 "DEF" 、と続くパターンとなります。

-- --

メタ文字をエスケープして通常の文字として扱う方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。