• ベストアンサー

正規表現、htmlからリンクの相対パスのみ抜き出したい

タイトルの通りhtmlから正規表現で 相対パスのリンクだけ抜き出したいです。 現在は「a href="([^/][^\"]+)」のようにやっています でもこれだと a href="http://xxx.xxx---" a href="mailto:---" a href="javascript:---" のような拾いたくないケースにもマッチしてしまいます。 途中に「:」が入るのをマッチさせなければいいんでしょうけど、 うまい表現が思いつきません。 このような条件でマッチさせる正規表現は どのようにすればいいでしょうか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4848/10262)
回答No.2

: を含まないというのだと、 a href="([^/][^\":]+)" でいいのでは?

hi6hi6
質問者

お礼

まさに希望通りマッチしました。 最後に " をつけるのは思いつきませんでした、 勉強になりました、ありがとうございます。

その他の回答 (1)

  • fire--
  • ベストアンサー率49% (146/293)
回答No.1

どの言語で正規表現を処理しているのかが判りませんが、 phpならばpreg_match_allでhrefの中身を一旦すべて 取り出して、次の段階で相対パスかどうかを判断させては どうでしょう。 preg_match_allは以下にあります。 ​http://www.php.net/manual/ja/function.preg-match-all.php​ php全般は ​http://www.php.net/manual/ja/

hi6hi6
質問者

お礼

早速の回答ありがとうございます。 環境について書いていませんでした、申し訳ありません。 jakarta-jmeterというwebアクセスをシュミレートするツールです。 確かに段階を分ければ出来そうなのですが、 jmeterでは1回でやる必要があるようなので困っております。 お手数かけさせてしまいすいませんでした、ありがとうございます。

関連するQ&A

  • サイト内リンクは絶対パスと相対パスとどちらが

    SEO観点で見た時に サイト内リンクは絶対パスと相対パスとどちらが良いのでしょうか? 地震のサイトがhttp://test.web.fc2.comの場合 <a href="/test.html">test</a> でいいのか <a href="http://test.web.fc2.com/test.html">test</a> の方が良いのか、教えてください。

    • ベストアンサー
    • SEO
  • 絶対パスと相対パスはどちらがいい?

    htmlで自サイト内のリンクをつける場合、絶対パスと相対パスはどちらを使った方がいいのでしょうか? すべてのファイルが同じディレクトリにあるとして、 <a href="test.html">test</a> と <a href="http://example.com/test.html">test</a> では、SEOの効果が違ったりしますか? 教えて下さい。よろしくお願いいたします。

    • ベストアンサー
    • HTML
  • 【ワードプレス】サイト内リンクをルート相対パスにできませんか

    【ワードプレス】サイト内リンクをルート相対パスにできませんか WordPress2.8使用者です。WordPressでサイトを作るとサイト内リンクであるにもかかわらず、必ず http://・・ というリンクになります。これは <a href="/category01/・・" といったルート相対パスに変更できないものでしょうか。 お詳しい方、よろしくお願いします。

  • 正規表現でフルパスを表すには?

    htmlファイルに書かれた、<a href="http://○○.html">を"<a href=link.htm">に書き換えたいと思っています。正規表現が使えるエディタがあるので、一括変換したいのですが、"http://○○.html"の表し方が分かりません。 是非、教えて下さい。宜しくお願い致します。 #URLのクォーテーションからクォーテーションまでを変換したいと思っています。

    • 締切済み
    • CGI
  • 正規表現について

    HTMLファイルを読み込み、特定の文字列にリンクを付けて出力したいのですが上手くいきません。 例: <img src="./seiki_hyougen.gif" alt="正規表現についての説明">更に正規表現を知りたい方は、<a href="special.html">正規表現の詳しい説明</a>をクリックして下さい。  ↓正規表現をキーワードにしてリンクを付けたい。 正:<img src="./seiki_hyougen.gif" alt="正規表現についての説明">更に<a href="seiki_hyougen.html">正規表現</a>を知りたい方は、<a href="special.html">正規表現の詳しい説明</a>をクリックして下さい。 誤:<img src="./seiki_hyougen.gif" alt="<a href="seiki_hyougen.html">正規表現</a>についての説明">更に<a href="seiki_hyougen.html">正規表現</a>を知りたい方は、<a href="special.html"><a href="seiki_hyougen.html">正規表現</a>の詳しい説明</a>をクリックして下さい。 尚、下記URLのサンプルを参考にしてスクリプトを作成しています。 http://php.oss.eznetsols.org/manual/ja/function.preg-split.php $r = preg_split('((\/a>)|(<a))', $html, -1, PREG_SPLIT_DELIM_CAPTURE); for ($i = 0; $i < count($r); $i++) { if ($r[$i] == "<a") { $i++; continue; } $r[$i] = preg_replace( "/(正規表現)/i", "<a href='seiki_hyougen.html'>\\1</a>", $r[$i] ); } return join("", $r); この(正規表現)の部分で上手い正規表現を使えばalt="×××"の中にリンクタグが入らないようにできるのでは?と思っているのですが・・・。 どうか、良い方法を教えて下さい。よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • php正規表現 相対パス→絶対パス

    下記のようにhtml内の相対パスの箇所を、 全て絶対パスに置換えるにはどう記述したらよいでしょうか? ご伝授いただけたら幸いです。 <a href="/test/jp/danny.pdf" target="_blank"> <img src="/cmn/img/text.gif">   ↓↓   ↓↓ <a href="http://testsaite.co.jp/test/jp/dammy.pdf" target="_blank"> <img src="http://testsaite.co.jp/cmn/img/text.gif">

    • ベストアンサー
    • PHP
  • 戻り読みの代わりとなる正規表現について

    正規表現を使いたいのですが、 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は今後も増える可能性があり、サイト名、文字数、画像名などもバラバラです。 うまくマッチさせる方法はありますでしょうか。 詳しい方いらっしゃいましたらよろしくお願いします!

  • 正規表現を使って?

    置換の正規表現を使ってこの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/など) 正規表現についてはまったく分からず悩んでいます。 どなたかよろしくお願いします。

  • 正規表現を使って文字列をコピー

    以下のような記述があるファイルが山のようにあります。 <a href="http://xxx.jp">リンクはこちら</a> <a href="http://yyyjp">リンクはこちら</a> <a href="http://zzz.jp">リンクはこちら</a>… これをDreamweaverの正規表現を使って書き換えたいのです。↓ <a href="http://xxx.jp">http://xxx.jp</a> <a href="http://yyyjp">http://yyyjp</a> <a href="http://zzz.jp">http://zzz.jp</a>… いろいろ試しましたが正規表現はまだあまり理解できていないためどのようにしたらいいのかわかりません。 よろしくおねがいします。

  • 正規表現について

    正規表現で、最初に出てきた条件に合うものだけマッチさせて置換したく、それ以降に条件に合うものがあってもマッチさせたくないのですが、どうすればいいでしょうか? 現在、オプションはつけてないのですが、最後にマッチしたものがとりだされてしまいます。 ---------------------------------------- s/aaa(.*)ccc/$1/; ・・・・・正規表現 ---------------------------- aaabbbccc : : aaadddccc : aaaeeeccc ---------- だと、eeeに置換されるのですが、bbbに置換したいです。 よろしくお願いします。

    • ベストアンサー
    • Perl

専門家に質問してみよう