正規表現でURLやUSER_AGENTを書く際の注意


投稿日:2011年12月19日
  • 1
  • 0


プログラムがさっぱりな人でも正規表現を理解しておこう

スパム対策や、PHPの修正などをしていると、どうしても正規表現で記述する必要が出てきます。
正規表現とは簡単に言えば「文字のパターンを表す表現」のことです。
たとえば「あ~ん、までの全ての文字」という指定をする場合
あいうえ…」と1文字ずつ書くのは大変です。
そこで正規表現を使うと、「あ-ん」と書くだけで同じ意味を持ちます。

そうした文字のパターンを表現するのに使われるのが特殊文字である「メタ文字」です。
多くの方がつまづくのが「メタ文字」の扱いだと思います。

メタ文字」とは具体的には

.   ^   $   [   ]   *   +   ?   |   (   )

などの文字です。

それぞれ

メタ文字 読み方 意味
. ピリオド、ドット 任意の一文字
^ キャレット 先頭
$ ダラー、ドルマーク 末尾
[] スクエアブラケット開、スクエアブラケット閉 []内のいずれか1文字
* アスタリスク 0回以上の繰り返し
+ プラス 1回以上の繰り返し
? クエスチョンマーク 0回または1回の繰り返し
| バー OR
() バーレン開、バーレン閉 グループ

という意味を持っています。


例えば正規表現を求められる場で「oxynotes.com」と入力するとエラーが出ます。
任意の一文字」を表す「.(ドット)」が使われている為です。
そこで登場するのが

メタ文字 読み方 意味
¥ バックスラッシュ、円マーク エスケープ

¥の次にくる特殊文字をプレーン文字(ようはテキストデータ)として扱ってくれるメタ文字です。

つまり「oxynotes.com/hoge」を正規表現で表すには「oxynotes¥.com¥/hoge」と入力すれば問題なく動作します。

また区切りに使われる文字もエスケープする必要があります。例えば「/(スラッシュ)」です。「/から/で囲んだパターンでマッチさせる」という書式の場合URLなどスラッシュ含む文字をマッチさせるには「¥/」とする必要があります。


現在のページを共有する



現在のページに関連する記事

正規表現でURLやUSER_AGENTを書く際の注意 Googlebotを手懐ける!robots.txtの書き方とrobots.txtテスターの使い方
正規表現でURLやUSER_AGENTを書く際の注意 URLを正規化して、Googleにページの重要度を伝える方法
正規表現でURLやUSER_AGENTを書く際の注意 ロリポップ!でWebサイトのデータをzip圧縮してバックアップする方法
正規表現でURLやUSER_AGENTを書く際の注意 全く新しい決済サービスPayPal.Meの導入と使い方を解説
正規表現でURLやUSER_AGENTを書く際の注意 話題のMarkdown記法を秀丸でMonokai風にハイライト表示にする方法
正規表現でURLやUSER_AGENTを書く際の注意 知らないうちにロリポップ!にバックドアが仕掛けられていた!
HTMLやPHPのタグをWordPressで表示する方法 HTMLやPHPのタグをWordPressで表示する方法

おすすめの記事

Norikraの使い方をサンプルのクエリとイベントを交えて解説

Norikraの使い方をサンプルのクエリとイベントを交えて解説

知らなきゃ損!WordPressの表(テーブル)はExcelで作ろう!

知らなきゃ損!WordPressの表(テーブル)はExcelで作ろう!

PukiWikiで5段階評価を付けるプラグインを作成しました

PukiWikiで5段階評価を付けるプラグインを作成しました

WordPressの最速キャッシュを探せ!APC、memcached、Transients APIを比較

WordPressの最速キャッシュを探せ!APC、memcached、Transients…

全く新しい決済サービスPayPal.Meの導入と使い方を解説

全く新しい決済サービスPayPal.Meの導入と使い方を解説

Custom Post Type UIでカスタム投稿を作って、誰でも簡単に編集できる投稿画面を作る方法

Custom Post Type UIでカスタム投稿を作って、誰でも簡単に編集…

FuckAdBlockを利用して自由自在にAdblock対策をする方法

FuckAdBlockを利用して自由自在にAdblock対策をする方法

Excelでセルとセルの間をダブルクリックすると移動する機能を停止する方法

Excelでセルとセルの間をダブルクリックすると移動する機能を停…


コメントを残す

コメントは認証制のため、すぐには反映されません。

プログラミングに関する質問は「日本語でプログラミングの悩みを解決するQ&Aサイト sukegra」をご利用ください。