正規表現における「/(スラッシュ)」の意味と使い方

最終更新:2018-07-19 by Joe

正規表現における「/」の意味と使い方についてまとめました。

正規表現における「/(スラッシュ)」

まず大前提ですが、正規表現において「/(スラッシュ)」は、特別の意味を持たない、ただの文字です。

ただし、正規表現では「デリミタ」としてスラッシュを利用することが一般的で、その意味では、少しだけ特別な存在です。

デリミタとしてのスラッシュ

正規表現のスラッシュで、最もよく目にするのが「デリミタ(Delimiter)」と呼ばれる記号としての利用方法です。

「デリミタ」は、正規表現パターンの両端を同じ囲むことで、パターンの範囲を明示します。デリミタは、実際はどの文字でもOKなのですが、慣習的に「/」を使うことが多くなっています。

PHP:スラッシュをデリミタとして使う例

PHPでは、デリミタを文字列の両端に加えることで、正規表現で記述します。

<?php

// 正規表現を記述。デリミタに「/」を利用。
$pattern = '/カレー/';

// 検索対象
$subject = '今日はカレー曜日';
if ( preg_match( $pattern, $subject ) ) {
  echo 'カレーが見つかりました!';
}

上記でも述べましたが、実際は何の文字でもいいので、もしパターン内にスラッシュが多く出現するのであれば、スラッシュをデリミタにつかわないほうがよいでしょう。

// デリミタと同じ文字は、エスケープが必要
$ptn = ’\/image\/index.php/;

// デリミタに#を使えば、スラッシュをエスケープしなくて良い
$ptn = "#var/www/html/index.php#";

エスケープについては、こちらに詳しくまとめましたので、ご一読下さい。

Javascript におけるスラッシュ

また、Javascript においては、正規表現オブジェクトを、リテラルに宣言することがができます。Javascript のリテラル宣言においては、デリミタにスラッシュを利用したときのみ、オブジェクトの宣言とみなされます。

Javascript の正規表現の宣言においては、スラッシュは特に特別な存在だといえるでしょう。

// 正規表現オブジェクトを宣言(リテラル宣言)
var pattern1 = /ラーメン/;

// 上記は、これの new による宣言と同義。
var pattern2 = new Regex('ラーメン'); 


// 検索対象
var subject = '今日はラーメン曜日';


console.log( pattern1.test(subject) ); // true 
console.log( pattern2.test(subject) ); // true 

スラッシュを使ったリテラル宣言は手軽ですが、正規表現のパターンでは、やはりスラッシュをエスケープする必要がありますので、パターン内にスラッシュが出現するケースでは、new による宣言のほうが扱いやすいでしょう。

このように、Javascript の正規表現は2つの方法があり、初学者は混乱しやすいかもしれません。こちらにも詳しくまとめました:

正規表現とスラッシュの参考情報

こちらの記事で、正規表現に関して、入門向けに広くまとめています。

PHPの正規表現関数です: