• 締切済み

正規表現でURLから任意の文字列取得

文字列 http://dailynews.yahoo.co.jp/fc/http://dailynews.yahoo.co.jp を削除する正規表現を試行中です。 はじめたばかりでスキルが乏しいのですが、 アドバイスいただきたくよろしくお願いします・

みんなの回答

  • ky072
  • ベストアンサー率60% (85/140)
回答No.4

$url =~ s/https?:\/\/[^\/]+\//\//g;

makiton
質問者

お礼

ご提示いただいた方法でもできました。 ご親切にありがとうございました!

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.3

http://dailynews.yahoo.co.jp/fc/」から「http://dailynews.yahoo.co.jp」を削除したいなら s(http://dailynews.yahoo.co.jp)(); でいいと思う.

makiton
質問者

お礼

こちらの方法も良いのですが、 汎用性から他のものを優先しました。 ありがとうございました。

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

なにが「うまくいかない」か書きましょうよ。 こちらで試してみたら Unmatched [ in regex; marked by <-- HERE in m/http://[ <-- HERE ^/ (略) と出ました。[と]の数が合わない、と書いてあります。 場所も書いてあります。 [^/]の]が「無い」ってことです。 でも、ありますよね? 原因は、 / が区切りとして認識されたので [^までと]以降に分解されてしまったことです。 s/http:\/\/[^\/]+//g ; とエスケープするとか、区切りに別の文字を使う (例 's|http://[^/]+|| ; ) とかです。 詳細はマニュアルでも読んでください。 あとは ・$urlの内容はどうなってますか? それによっては、 ^http(以下略)とする、とか、gを使わないとかも考えられます。

  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.1

http://[^/]+ で http://dailynews.yahoo.co.jp にマッチするはずよ。

makiton
質問者

補足

早速ありがとうございます。 $url =~ s/http:\/\/[^/]+//g; こう書いたのですが、うまく動かないので間違っているようです。 ご指摘いただけないでしょうか。

関連するQ&A