正規表現で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で表示する方法

おすすめの記事

これ以上ないくらい簡単な例から学ぶ、レスポンシブwebデザインの作り方

これ以上ないくらい簡単な例から学ぶ、レスポンシブwebデザイン…

Google Fontsの日本語フォント「Noto Fonts」の使い方

Google Fontsの日本語フォント「Noto Fonts」の使い方

メールのエラーコードと、メールサーバのmaillog解析方法まとめ

メールのエラーコードと、メールサーバのmaillog解析方法まとめ

Web Fontの使い方とGoogle Fontsのオススメフォント 10選

Web Fontの使い方とGoogle Fontsのオススメフォント 10選

GMO VPSを契約してWordPressを安定動作させるまでのサーバ設定方法

GMO VPSを契約してWordPressを安定動作させるまでのサーバ設定…

「このアプリがシャットダウンを妨げています」と表示されるがアプリがわからない場合の対処法

「このアプリがシャットダウンを妨げています」と表示されるが…

ImageMagickをWindowsのXAMPPに導入する方法

ImageMagickをWindowsのXAMPPに導入する方法

ClamAVとClamSMTPを利用してPostfixのメールをウイルスチェック

ClamAVとClamSMTPを利用してPostfixのメールをウイルスチェック


コメントを残す

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

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