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/16 13:45:23
  • 終了:2007/02/20 19:30:56

ベストアンサー

id:b-wind No.1

b-wind回答回数3344ベストアンサー獲得回数4402007/02/16 13:55:12

ポイント27pt

それ一行?

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

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

でいいと思うけど。

正規表現メモ

id:zachouR

はい、これは一行です。

ありがとうございます。

2007/02/16 14:06:12

その他の回答(2件)

id:b-wind No.1

b-wind回答回数3344ベストアンサー獲得回数4402007/02/16 13:55:12ここでベストアンサー

ポイント27pt

それ一行?

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

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

でいいと思うけど。

正規表現メモ

id:zachouR

はい、これは一行です。

ありがとうございます。

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

回答回数421ベストアンサー獲得回数752007/02/16 13:58:55

ポイント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

b-wind回答回数3344ベストアンサー獲得回数4402007/02/16 14:08:54

ポイント26pt

別解

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

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

id:zachouR

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

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

2007/02/17 00:18:01

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

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

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

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

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません