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

おすすめの記事

Adblock対策プラグイン「End of Adblock Cycle」を作成しました

Adblock対策プラグイン「End of Adblock Cycle」を作成しました

開発の最前線でクリエイター・エンジニアに必要なプログラミング言語

開発の最前線でクリエイター・エンジニアに必要なプログラミン…

日々の単純作業を自動化できるUWSCの使い方(入門・書式編)

日々の単純作業を自動化できるUWSCの使い方(入門・書式編)

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

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

Google Feed APIの代替手段としてjQueryだけでRSSを表示する方法

Google Feed APIの代替手段としてjQueryだけでRSSを表示する方法

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

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

パソコン用メガネなんていらない!無料でできる5つの疲れ目対策

パソコン用メガネなんていらない!無料でできる5つの疲れ目対策

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

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


コメントを残す

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

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

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください