- 締切済み
正規表現でURLから任意の文字列取得
文字列 http://dailynews.yahoo.co.jp/fc/ の http://dailynews.yahoo.co.jp を削除する正規表現を試行中です。 はじめたばかりでスキルが乏しいのですが、 アドバイスいただきたくよろしくお願いします・
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- ky072
- ベストアンサー率60% (85/140)
$url =~ s/https?:\/\/[^\/]+\//\//g;
- Tacosan
- ベストアンサー率23% (3656/15482)
「http://dailynews.yahoo.co.jp/fc/」から「http://dailynews.yahoo.co.jp」を削除したいなら s(http://dailynews.yahoo.co.jp)(); でいいと思う.
お礼
こちらの方法も良いのですが、 汎用性から他のものを優先しました。 ありがとうございました。
- kmee
- ベストアンサー率55% (1857/3366)
なにが「うまくいかない」か書きましょうよ。 こちらで試してみたら Unmatched [ in regex; marked by <-- HERE in m/http://[ <-- HERE ^/ (略) と出ました。[と]の数が合わない、と書いてあります。 場所も書いてあります。 [^/]の]が「無い」ってことです。 でも、ありますよね? 原因は、 / が区切りとして認識されたので [^までと]以降に分解されてしまったことです。 s/http:\/\/[^\/]+//g ; とエスケープするとか、区切りに別の文字を使う (例 's|http://[^/]+|| ; ) とかです。 詳細はマニュアルでも読んでください。 あとは ・$urlの内容はどうなってますか? それによっては、 ^http(以下略)とする、とか、gを使わないとかも考えられます。
- askaaska
- ベストアンサー率35% (1455/4149)
http://[^/]+ で http://dailynews.yahoo.co.jp にマッチするはずよ。
補足
早速ありがとうございます。 $url =~ s/http:\/\/[^/]+//g; こう書いたのですが、うまく動かないので間違っているようです。 ご指摘いただけないでしょうか。
お礼
ご提示いただいた方法でもできました。 ご親切にありがとうございました!