正規表現を使いこなす

\ の使い方

\ の使い方と言っても、お金の使い方ではありません。正規表現のエスケープ文字の使い方です。
ここではJavaScriptで正規表現のメタ文字のエスケープ実験をして見ましょう。
メタ文字とは、 [ ] { } ( ) \ | ^ $ . * + ? などの文字で、正規表現のパターンに使用すると特別の意味を持ちます。
これらのメタ文字を、文字そのものとして指定する場合に \ を付けてメタ文字ではないことを指定できます。
なお、この実験では、search()、match()、およびreplace()の各メソッドにより、位置の検索、文字列の抽出、および文字列の置換を行います。

例えば、メタ文字「*」を含んだ文字列「abc*defg」から、「c*d」の検索を行うとします。
以下のように正規表現のパターンで「c*d」のようにメタ文字をそのまま指定して検索を行うと・・・
// 検索対象文字列
var str = "abc*defg";
// 検索実行および結果出力
document.write("検索結果: ", str.search(/c*d/));
document.write("<br>抽出結果: ", str.match(/c*d/));
document.write("<br>置換結果: ", str.replace(/c*d/, "cd"));
実行結果:


となり、正しい結果にはなりません。これはパターンに含まれる「*」がメタ文字であることが原因です。
正規表現のパターン「c*d」は、文字「c」の0回以上の繰り返し(「*」の意味)と文字「d」の並びを意味するからです。
そこで、「\*」として「*」が通常の文字であることを指定して検索すると・・・
// 検索対象文字列
var str = "abc*defg";
// 検索実行および結果出力
document.write("検索結果: ", str.search(/c\*d/));
document.write("<br>抽出結果: ", str.match(/c\*d/));
document.write("<br>置換結果: ", str.replace(/c\*d/, "cd"));
実行結果:


以上のように、正常にパターンマッチングが実行できました。

戻る