Perlに関する質問です。正規表現になると思います。


以下のあるテキストデータがあって、

//wrs.search.yahoo.co.jp/S=2114736003/K=%E3%81%8D%E3%82%8A%E3%82%93%E5%BA%A7/v=2/SID=w/l=WS1/R=2/IPC=us/SHE=0/H=0//SIG=11p8an274/EXP=1171686616/*-http%3A//d.hatena.ne.jp/camelopardalis/index.html

となっていた場合、後ろの部分の、「d.hatena.ne.jp/camelopardalis/index.html」がほしい場合は
どのようにしたらいいでしょうか?

自分はもう、後ろから一字づつしらみつぶしに調べていく方法しかわかりません。

どなたか、よい案がありましたら、教えてください。
よろしくお願いします。

回答の条件
  • URL必須
  • 1人20回まで
  • 登録:
  • 終了:2007/02/20 19:30:56
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:b-wind No.1

回答回数3344ベストアンサー獲得回数440

ポイント27pt

それ一行?

// をセパレーターと考えていいんなら、

$text =~ m|//(.*?)$|;
$result = $1;

でいいと思うけど。

正規表現メモ

id:zachouR

はい、これは一行です。

ありがとうございます。

2007/02/16 14:06:12

その他の回答2件)

id:b-wind No.1

回答回数3344ベストアンサー獲得回数440ここでベストアンサー

ポイント27pt

それ一行?

// をセパレーターと考えていいんなら、

$text =~ m|//(.*?)$|;
$result = $1;

でいいと思うけど。

正規表現メモ

id:zachouR

はい、これは一行です。

ありがとうございます。

2007/02/16 14:06:12
id:bonlife No.2

回答回数421ベストアンサー獲得回数75

ポイント27pt

以下のようなやり方ではいかがでしょうか。

(最後のスラッシュ2個の後ろの値を取得します。)

#! /usr/bin/perl

use strict;
use warnings;

my $str = "//wrs.search.yahoo.co.jp/S=2114736003/K=%E3%81%8D%E3%82%8A%E3%82%93%E5%BA%A7/v=2/SID//=w/l=WS1/R=2/IPC=us/SHE=0/H=0//SIG=11p8an274/EXP=1171686616/*-http%3A//d.hatena.ne.jp/camelopardalis/index.html";

$str =~ m{^.*//(.*?)$};
print $1;

詳説 正規表現 第2版

詳説 正規表現 第2版

  • 作者: Jeffrey E.F. Friedl
  • 出版社/メーカー: オライリー・ジャパン
  • メディア: 単行本

正規表現に関しては、この本が参考になります。

id:zachouR

ありがとうございます。

うまくいきました。

ご紹介された本は購入しています。分厚くて頭がくらくらしそうです(;;)

2007/02/16 14:14:26
id:b-wind No.3

回答回数3344ベストアンサー獲得回数440

ポイント26pt

別解

$result = (split( '//' , $text ))[-1];

http://q.hatena.ne.jp/answer

id:zachouR

いつも、ありがとうございます。

参考にさせていただきます。

2007/02/17 00:18:01

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません