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

おすすめの記事

WordPressで手軽にAdblock対策するならBetter Stop AdBlockで決まり!

WordPressで手軽にAdblock対策するならBetter Stop AdBlockで決…

公式ドキュメントよりも詳しいTinyMCEの使い方(基本編)

公式ドキュメントよりも詳しいTinyMCEの使い方(基本編)

新しいGoogleマップ「Google Maps Platformの使い方」まとめ

新しいGoogleマップ「Google Maps Platformの使い方」まとめ

GMO系列のホスティングサービスでGmailへメールが送信できない不具合が発生中

GMO系列のホスティングサービスでGmailへメールが送信できない…

本気で作りたい人向け、WordPressプラグインの作成方法

本気で作りたい人向け、WordPressプラグインの作成方法

ads.txtの設置方法を通して学ぶインターネット広告の問題点

ads.txtの設置方法を通して学ぶインターネット広告の問題点

今さら聞けない、変数や関数の命名規則と、まず覚えるべき英単語200

今さら聞けない、変数や関数の命名規則と、まず覚えるべき英単…

WordPressの新・旧ループからカスタムクエリ・アーカイブまで徹底解説

WordPressの新・旧ループからカスタムクエリ・アーカイブまで徹…


コメントを残す

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

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