1. ホーム
  2. .htaccess
  3. 正規表現の基本

正規表現の基本

.htaccess では、一部のディレクティブ(RewriteRule、RewriteCond、Macht の含まれるもの)では正規表現が利用できます。

正規表現とは、プログラミングで使用される、いくつかの文字列を1つの形式で表現する記述方法です。何に使われるかといえば、多くの文字列から必要な文字列を検索して、条件を指定したりする場合です。

プログラミングとかしていても、あまり使わないやつとか、忘れちゃうんですよね。
.htaccess のディレクティブをまとめる前に、基本的な正規表現をまとめてみます。

基本的な正規表現

記号 説明
. 任意の1文字にマッチ
例)”の.と” なら、”のーと”、”のうと”、”のりと” などがマッチ。
^ ^ に続く文字列が 行の先頭にある場合にマッチ
例)”^本” なら、”本棚”、”本拠” はマッチ。”台本” はマッチしない。
$ $ の前の文字列が 行の文末にある場合マッチ
例)”花$” なら、”生花”、”紅花” はマッチ。”花束” はマッチしない。
* * の前の文字が 0回以上繰り返す場合にマッチ
例)”はー*い” なら、”はい”、”はーい”、”はーーい” などがマッチ。
+ + の前の文字が 1回以上繰り返す場合にマッチ
例)”はー+い” なら、”はーい”、”はーーい” がマッチ。”はい” はマッチしない。
? ? の前の文字が 0個か1個ある場合にマッチ
例)”はー?い” なら、”はい”、”はーい” がマッチ。”はーーい” はマッチしない。
| ~または~(選択肢の区切り目)
例)”小学生|中学生|高校生” なら、この3つの選択肢のいずれかがマッチした場合。
[] 角括弧内の文字のどれか1つにマッチ。
例)[abc123] なら、”a”、”b”、”c”、”1″、”2″、”3″にマッチ。

角括弧内の文字を “-” を使って範囲指定可能
例)[a-cX-Z0-1] は “a”、”b”、”c”、”X”、”Y”、”Z”、”0″、”1” にマッチ。

[^] 角括弧内の文字が含まれないものにマッチ
例)[^a-c] なら、”a”、”b”、”c” 以外にマッチ。
() グループ化(文字の集合を1つにまとめて扱う)
例)(一時間)+ なら、”一時間” にマッチ。
{} 直前の文字、またはグループの桁数を指定
例)”あ{3}” なら、”あああ” がマッチ。
“あ{2,3}” なら、”ああ”、”あああ” がマッチ。
“あ{2,}” なら、あを2回以上繰り返すものがマッチ。

メタ文字を普通の文字として扱う ” \

正規表現の基本として使用される ” . 、^ 、$ 、* 、+ 、? 、| 、[ 、] 、{ 、} ” は、メタ文字と呼ばれ、上記、「基本的な正規表現」でまとめた通り、文字を形式に沿って表現するための意味が与えられています。これらのメタ文字を、普通の文字として扱うには、直前に “ \ ” を記述することで実現します。

説明
\ エスケープ 直後のメタ文字を普通の文字として扱う
例)”2\+3″ の場合、”2+3″ がマッチ。”+” は、「直前の文字が 1回以上繰り返す場合にマッチ」という意味ではなく、普通の文字として扱われる。

定義済みの文字クラス

記号 説明
\d [0-9] 全ての数字
\D [^0-9] 数字以外の全ての文字
\s [\t\f\r\n] 垂直タブ以外のすべての空白文字
\S [^\t\f\r\n] 空白文字以外の全ての文字
\w [a-zA-Z_0-9] アルファベット、アンダーバー、数字
\W [^a-zA-Z_0-9] アルファベット、アンダーバー、数字以外の全ての文字

後方参照

正規表現で条件にマッチングした文字または文字列は、変数として格納して、それより後で利用することができます。
後方参照について詳しくはこちら⇒後方参照