• ベストアンサー

効率良くURLを拾う正規表現

noname#25358の回答

noname#25358
noname#25358
回答No.3

 なんか、ymdaさんのおっしゃってるのを見ると可能なようですね。  俺の場合、基本的に正規表現が嫌いなので(ルールが難しすぎる、他人のソースを見たとき見にくい、などの理由から)、簡単な置き換えくらいにしか使いませんが、正規表現を使うのであれば、ymdaさんのソースでいいのではないでしょうか。  一般にメールアドレスでは、アカウント部では数字とアルファベットと「-(ハイフン)」が使え、サーバー名の部分はさらに「.(ピリオド)」を使えるようにしているようです。

関連するQ&A

  • 正規表現を使って?

    置換の正規表現を使ってこのURLを (例) <A href="http://123.com/456/789/"><IMG src="http://123/456/789.jpg" border="0"></A> <A href="http://123.com/456/789/">リンク先</A> このようにしたいです。 <A href="http://tesuto=http%3A%2F%2F123.com%2F456%2F789%2F"><IMG src="http://123/456/789.jpg" border="0"></A> <A href="http://tesuto=http%3A%2F%2F123.com%2F456%2F789%2F">リンク先</A> :は%3aに /は%2fに 最後にリンク先のURLにhttp://tesuto=を追加したいです。 (<IMG src="からのURLはそのままにしたいです。) ちなみにhtml内には様々なタグが入っていてリンク先も様々なURLが書かれているとします。 (http://123.com/456/789/やhttp://123.com/456/789/abc/dehg/など) 正規表現についてはまったく分からず悩んでいます。 どなたかよろしくお願いします。

  • PHPの正規表現で一部のURLを抜き出したい

    <a href="../hoge/hoge/hoge123.htm">テスト1</a><br> <a href="../hoge/hoge/hoge124.htm">テスト2</a><br> <a href="../hoge/hoge/hoge125.htm">テスト3</a><br> <a href="../hoge/hoge/hoge126.htm">テスト4</a><br> <a href="../hoge/hoge/hoge127.htm">テスト5</a><br> このような文字列があり「../hoge/hoge/hoge126.htm」だけをマッチさせたい場合はどのような正規表現を書けばよいでしょうか?回答宜しくお願いします。 *URL内の文は使わず、テスト1、テスト2・・・と<a href="、">を使ってくださいお願いします。

    • 締切済み
    • PHP
  • 正規表現(urlをリンクさせる)

    $comment = "http://www.yahoo.co.jpとhttp://www.google.co.jp/"; $comment =~ s/(http\:\/\/[a-zA-Z0-9\.\$\,\;\:\&\=\?\!\*\~\@\#\_\(\)\%\+\-\/]*)/<a href=\1>\1<\/a>/mg; 上の文字列では下記の様に置換されるのですが問題ないのですが <a href=http://www.yahoo.co.jp>http://www.yahoo.co.jp</a>と<a href=http://www.google.co.jp/>http://www.google.co.jp/</a> コメントが  $comment ="http://www.yahoo.co.jp&lt;br&gt;http://www.google.co.jp/"; だと <a href=http://www.yahoo.co.jp&lt;br&gt;http://www.google.co.jp/>http://www.yahoo.co.jp&lt;br&gt;http://www.google.co.jp/</a> のように置換されてしまいます。 下記の様に置換する正規表現を教えてください。 <a href=htt://http://www.yahoo.co.jp>http://www.yahoo.co.jp</a>&lt;br&gt;<a href=http://www.google.co.jp/>http://www.google.co.jp/</a>

    • ベストアンサー
    • Perl
  • 秀丸エディタの正規表現

    秀丸エディタの正規表現の機能を使って、次のような置換を考えています。 変更前 <A>hoge hoge PINEAPPLE hoge hoge PINEAPPLE hoge hoge</A> <B>hoge hoge PINEAPPLE hoge hoge PINEAPPLE hoge hoge</B> 変更後 <A>hoge hoge PINEAPPLE hoge hoge PINEAPPLE hoge hoge</A> <B>hoge hoge パイナップル hoge hoge パイナップル hoge hoge</B> 以下のようなものを試してもできませんでした。 検索 ^(<B>.*?)PINEAPPLE 置換 \1パイナップル このような変更を一度の置換で実現する正規表現はありますでしょうか。

  • 同行のurlの片方にアンカーをつける正規表現

    正規表現について、同じ行のurlの片方だけにアンカーをつけるには http://hoge.jp/ http://hoge2.jp/ http://hoge3.jp/ http://hoge4.jp/ こういう行があったとして、 http://hoge.jp/ <a href="http://hoge2.jp/">http://hoge2.jp/</a> http://hoge3.jp/ <a href="http://hoge4.jp/">http://hoge4.jp/</a> こういう結果を得たいですが、可能でしょうか

  • 戻り読みの代わりとなる正規表現について

    正規表現を使いたいのですが、 javascriptでは戻り読み表現が使えないと知って困っています・・・ <a href="http://abc.com/"><img src="http://image.abc.com/def.jpg"></a> <a href="http://hogehoge.com/"><img src="http://hogehoge.com/hoge.jpg"></a> <a href="http://123.com/"><img src="http://456.com/789.jpg"></a> <a href="http://momomo.com/"><img src="http://lelele.com/momo.jpg"></a> 上記のソースから http://image.abc.com/def.jpg http://hogehoge.com/hoge.jpg http://456.com/789.jpg http://lelele.com/momo.jpg だけをマッチさせたいです。 (画像のパスだけをマッチさせたい) URLは今後も増える可能性があり、サイト名、文字数、画像名などもバラバラです。 うまくマッチさせる方法はありますでしょうか。 詳しい方いらっしゃいましたらよろしくお願いします!

  • 正規表現で一発置換できるでしょうか?

    サイトにあるHTMLを読み込み、その中のリンク全てに target指定を追加して表示するPHPについてアドバイスをお願いします。 取込元のHTMLは↓な記述(全リンクにtarget指定は無い)  … <a href="http://bakubaku.com">ばくばく</a> …  … <a href="http://mogumogu.net">もぐもぐ</a> …  … <a href="http://karikari.org">かりかり</a> … これを、↓のように変換して出力したい  <a href="http://bakubaku.com" target="_brank">ばくばく</a>  <a href="http://mogumogu.net" target="_brank">もぐもぐ</a>  <a href="http://karikari.org" target="_brank">かりかり</a> とりあえず、  ・<a href…> のリストを preg_match_allで 抽出  ・要素数だけ 末尾の > を target="_brank"> に変換/入替 といった処理で結果は正しく出ますがパフォーマンス的に痛いですよね。 このような検索置換処理を、正規表現を使って、一発でできないものでしょうか? (すみません、、正規表現よく分かっていません、、)

    • ベストアンサー
    • PHP
  • phpの正規表現

    いつもお世話になっています。 テキストの中から「hoge.jp/」で終わっているURLだけを取得したいです。以下なら2行目の2つだけを。 phpと正規表現で取得できる方法をご教授下さい! 1.<a href="ttp://nono-com.hoge.jp/index.php">いらないブログ</a> 2.<p><a href="ttp://aaa-com.hoge.jp/">aaaのブログ</a><a href="ttp://bbb-com.hoge.jp/">bbbのブログ</a></p> 3.<a href="ttp://nono-com.hoge.jp/iranai/blog/">いらないブログ</a> 宜しくお願いします。

    • ベストアンサー
    • PHP
  • <a href>タグ内のURL抽出

    正規表現初心者です。ご教授よろしくお願いします。 <a href=http://hoge.com/hoge>hoge</a> <a href=http://hoge.com/hoge>hoge<br>hoge</a> 以上の<a href>リンクから、それぞれURLだけを抽出したいのですが うまくできません。 ereg("<a href=(.+)>(.+)</a>",$hoge,$a); echo $a[1]; で、1つ目はURL抽出できたのですが 2つ目のように<br>があると『 http://hoge.com>hoge 』と表示されてしまいます。 このような場合、どのようにして抽出すればよいのでしょうか??

    • ベストアンサー
    • PHP
  • 正規表現で置換

    その1 $str = "ほげほげほげ<a href="http://xxxx.xxxx.xxx/xxxx/">ほげほげほげ</a>ほげほげ<br /><br /><img src="http://yyy.hoge.jp/hage/hige/xxxx.jpg" width="320" height="240" />ほげほげ"; ↓ $str = "ほげほげほげ<a href="http://xxxx.xxxx.xxx/xxxx/">ほげほげほげ</a>ほげほげ<br /><br /><img src="./foo/faa/fii/xxx.jpg" width="320" height="240" />ほげほげ"; その2 $str = "<img src="http://yyy.hoge.jp/hage/hige/xxxx.jpg" width="320" height="240" />ほげほげほげ<a href="http://xxxx.xxxx.xxx/xxxx/">ほげほげほげ</a>ほげほげ<br /><br /><img src="http://yyy.hoge.jp/hage/hige/xxxx.jpg" width="320" height="240" />ほげほげ"; ↓ $str = "<img src="./foo/xxxx.jpg" width="320" height="240" />ほげほげほげ<a href="http://xxxx.xxxx.xxx/xxxx/">ほげほげほげ</a>ほげほげ<br /><br /><img src="./foo/faa/fii/xxx.jpg" width="320" height="240" />ほげほげ"; このような文字列があった時に、次のように従って置換したいです。 1.imgのタグの内部に、「http://yyy.hoge.jp/hage/hige/xxx.jpg」という文字列があった場合、「./foo/faa/fii/xxx.jpg」という文字列に置き換える。 2.それ以外のURLの場合は置換しない。 3.その1とその2では「xxx.jpg」となっていますが、jpg以外の拡張子の場合も存在する。 4.日本語とURLの位置や個数はバラバラです。 5.URLの中のxxxとyyyは不定の文字列で、hage、hoge、hige、foo、faa、fiiは固定です。 6.使用している言語はPHPです。正規表現を1度だけでできれば理想的ですが、今回は2回に渡った処理でも問題ありません。 以上です。正しく処理できる正規表現、あるいは下記の正規表現の誤りを教えて頂ければ幸いです。 お手数ですが、よろしくお願い致します。 下記の方法では、うまくできませんでした。 $pattern = "/http:\/\/.*?hoge.jp\//"; $replacement = "./"; $str= preg_replace($pattern, $replacement, $str); $pattern2 = '/\/?hage\/hoge/'; $str = preg_replace($pattern2, '/foo/faa/fii', $str);

    • ベストアンサー
    • PHP