読者です 読者をやめる 読者になる 読者になる

正規表現(5)

その他 その他-正規表現について
『 \ 』 メタ文字をエスケープするためのメタ文字

正規表現においてメタ文字は「文字を超越した文字」であり、特別な役割を持った文字です。たとえば.の場合、これは「任意の1文字」を表していて、普通の文字としての「半角ピリオド」を表すことはできません。

では、メタ文字を「普通の文字として」検出するにはどのようにするかといいますと、次のように書きます。

\.


メタ文字の前に\(バックスラッシュ)を付けることで、メタ文字が普通の文字になります。これを、メタ文字をエスケープすると言います。

\ はメタ文字でありますので、これをエスケープするには他のメタ文字と同様に、

\\


と、前にバックスラッシュを付けます。

(例1)

まずはエスケープしない場合。
f:id:four_or_three:20160618133928j:plain:w250
.はなんでもいい1文字ですので、.が検出の対象となります。

次に、エスケープした場合。
f:id:four_or_three:20160618133952j:plain:w250
\.とエスケープすることで、普通の文字としての半角ピリオドを検出することができます。

\Q〜\E  メタ文字をまとめてエスケープする

\は、直後のメタ文字を1文字だけエスケープすることができますが、文字列をまとめてエスケープする場合は次のようにします。

\Qhoge1hoge2\E


エスケープしたい文字列を\Q\Eで挟むことで、メタ文字であろうと普通の文字であろうと、全て普通の文字として解釈されます。

(例2)

まずはエスケープしない場合。
f:id:four_or_three:20160618134104j:plain:w250
.はなんでもいい1文字を表し、・?は「・がひとつもないか、1つだけある」を表しますので、・・が検出の対象となります。

次に、まとめてエスケープした場合。
f:id:four_or_three:20160618134139j:plain:w250
全て普通の文字として扱われます。


メタ文字のエスケープ処理を忘れることはよくあります(自分の場合)。
なんか狙ったとおりに検出できないんだけど・・・という時は、まずは、必要なエスケープ処理を忘れていないかどうか確かめてみるといいと思います。

第6回に続きます。

広告を非表示にする