header

正規表現で画像ファイルのURLを取り出す

(1/3)

前々回、テキストからURLを取り出す正規表現を紹介したが、 今回は、ネット上のコンテンツから <img> タグで指定された 画像URLを取り出すプログラムを作ってみることにする。 正規表現を少し変更するだけで、音声や動画ファイルのURLを取り出すこともできる。

<img src=〜> の表現形式

<img> タグの src 部分の URL 指定は、前々回で紹介した「URL で使える文字」の通りだが、 相対指定――'http://' ではじまらない――があることに留意する必要がある。
また、拡張子は画像限定なので、jpg, jpeg, gif, png, bmp の5種類を対象とすることにする。

これを正規表現で表すと以下のようになる。

/\<img(.*)src=\"?([\-_\.\!\~\*\'\(\)a-z0-9\;\/\?\:@&=\+\$\,\%\#]+(jpg|jpeg|gif|png|bmp))/i

拡張子指定を変更することで、音声や動画ファイルのURLを取り出すこともできる。こうしたカスタマイズのしやすさも、正規表現の強みである。
また、詳しいことはプログラムの説明で述べるが、今回は preg 系の正規表現関数を使うため、パターン全体をスラッシュ '/' で囲む必要がある。

今回使った正規表現

?
直前1文字の0または1回の繰り返し。
[ ]
文字クラス。
この中に記述された文字の並びのうちの1文字を表す。
-
文字の範囲指定。
a-z はアルファベット小文字すべてに、0-9は数字すべてにマッチする。
+
直前1文字の1回以上の繰り返し。
(a|b)
aまたはbにマッチする。
/.../i
Perl互換正規表現では、全体をスラッシュ '/' で囲む。最後の 'i' は、大文字・小文字の両方にマッチすることを意味する。
ここでは、文字クラス '[a-z]' に対応するアルファベット大文字や、サブクラス '(jpg|jpeg|gif|png|bmp)' に対応する大文字の拡張子にもマッチする。

この正規表現を使ったサンプル・プログラムを次のページに掲載する。

(この項つづく)