小池啓仁 ヒロヒト応援ブログ By はてな

小池啓仁(コイケヒロヒト)の動画など。

小池啓仁 ヒロヒト応援ブログ By はてな

URLからPathを抜き出すには

URLは、RFC1738では、以下のようになっています。

HTTP URL は、以下のような形態を取る
http://:/?

http://www.spencernetwork.org/reference/rfc1738-ja-URL.txt

以下にURLからを抜き出す正規表現を書いてみました。


◆サンプル

use strict;
use warnings;

my $wkURL = 'http://d.hatena.ne.jp/chaichanPaPa/searchdiary?word=%2a%5bPerl%a5%ce%a1%bc%a5%c8%5d';

$wkURL =~ /^http:\/\/.*?(\/.*?)(\?|\Z)/;

print $1, "\n";
最短マッチの『.*?』がポイントですね。
はじめの『.*?』は『\/』までの最短マッチで、つぎの『.*?』は、『(\?|\Z)』までの最短マッチです。

追記:今回の場合は正規表現を使わないで、以下のようにURIモジュールを使った方がベターです。(tyruさんから教えていただきました)

use strict;
use warnings;
use URI;

my $uri = URI->new('http://d.hatena.ne.jp/chaichanPaPa/searchdiary?word=%2a%5bPerl%a5%ce%a1%bc%a5%c8%5d');
print $uri->path;