プログラミムで文字列処理を行う時に便利な正規表現。正規表現を用いると、たとえば文字の検索が容易に行えたりします。正規表現は「表現」という言葉どおり、文字や文字列を、ある規則に従って表現(パターン化)することができる便利なものですが、ちょっと特別なルールがあります。
アルファベット以外の特殊な「メタ文字」を正規表現で表すルールが、その1つです。
正規表現における「エスケープ」とは
メタ文字とはアスタリスク(*)やプラス(+)などのアルファベットではない特殊な文字ことです。
これらを正規表現で表すには、メタ文字の直前に\(バックスラッシュ)を付ける必要があります。
これを「エスケープする」または「エスケープ処理」と言います。
エスケープ処理を行うことによって、メタ文字の特別な意味が打ち消され、メタ文字自身を表すようになります。
正規表現でエスケープが必要な文字
下記に具体的にエスケープが必要なメタ文字を記載します。
エスケープ前 | エスケープ後 | 注意点 |
\ (バックスラッシュ) | \\ | エスケープを行う文字そのものなために、\ だけの記述はできません。\ を普通な文字として取り扱いたい場合は、 \\ と記述します。 |
*(アスタリスク) | \* | |
+(プラス) | \+ | |
.(ドット) | \. | |
?(クエスチョンマーク) | \? | |
^(キャレット) | \^ | 行頭を指定することになります。 |
$(ドル) | \$ | 行末を指定することになります。Perl言語では、変数の先頭文字を表します。 |
-(マイナス) | \- | [ ]の中に書く場合のみエスケープが必要 |
|(パイプ) | \| | |
/(スラッシュ) | \/ | |
{ or }(カーリーブラケット) | \{ | 出現回数指定文字なのでエスケープが必要 |
( or )(パーレン) | \) | エスケープしないと後方参照が作成される。またはグループ化される。 |
[ or ](スクエアブラケット) | \[ | 直前文字の出現回数指定文字なのでエスケープが必要 |
まとめ
このように正規表現では、メタ文字を使用することによって、複雑で高度な表現(パターン)を行うことができます。ただしメタ文字を特殊な意味を持たない普通の文字として取り扱いたい場合は、上述のようにエスケープ処理が必要です。どのような文字を扱うときにエスケープが必要なのか確認しておきましょう。
また、プログラミング言語によっては、メタ文字の取り扱い方に、多少の違いもあるので、取り扱う場合は、言語依存のルールも確認しましょう。