前提・実現したいこと
ソースコードをクローラーで取得し、その取得したコードのURLにシステムコードとパラメータがついているので、それを取り除きルートパスに直したソースに置き換えたいです。
リンクが1つの場合は問題なく置換できたのですが、複数のリンクが存在していると一番初めのリンクと、
一番最後のリンクの間が置換されてしまってうまく書き換えられませんでした。
お知恵を拝借いただけないでしょうか。
発生している問題
html
1<a href="index.php?eID=tx_nawsecuredl&u=0&file=/file/open/data/file/XXXXXXXX/XXXXXXXX.pdf&t=1598345025&hash=959a2df32e771e375313c68bf6777e00" class="pdf first odd blank">XXXXXXXXXXXXXXX.pdf</a> 2<p>文章文章文章文章文章文章文章文章文章文章</p> 3<p>文章文章文章文章文章文章文章文章文章文章</p> 4<p>文章文章文章文章文章文章文章文章文章文章</p> 5<a href="index.php?eID=tx_nawsecuredl&u=0&file=/file/open/data/file/XXXXXXXX/XXXXXXXX.pdf&t=1598345025&hash=959a2df32e771e375313c68bf6777e00" class="pdf first odd blank">XXXXXXXXXXXXXXX.pdf</a>
↑ こういうソースコードを取得して、
html
1<a href="/file/open/data/file/XXXXXXXX/XXXXXXXX.pdf" class="pdf first odd blank">XXXXXXXXXXXXXXX.pdf</a> 2<p>文章文章文章文章文章文章文章文章文章文章</p> 3<p>文章文章文章文章文章文章文章文章文章文章</p> 4<p>文章文章文章文章文章文章文章文章文章文章</p> 5<a href="/file/open/data/file/XXXXXXXX/XXXXXXXX.pdf" class="pdf first odd blank">XXXXXXXXXXXXXXX.pdf</a>
↑ このように書き換えたいが、
html
1<a href="/file/open/data/file/XXXXXXXX/XXXXXXXX.pdf" class="pdf first odd blank">XXXXXXXXXXXXXXX.pdf</a>
↑ このようになってしまう
該当のソースコード
ruby
1sauce = sauce.gsub(/<a href=\"index.php?.+file=.+&t=.+&hash=.+\" class=\".+\">.+</a>/)
試したこと
ruby
1sauce = sauce.sub(/<a href=\"index.php?.+file=.+&t=.+&hash=.+\" class=\".+\">[^<a href=]</a>/, "★リンク1★")
aタグの中にaタグが入らないように取得するために[^<a href=]
を入れてみまして、loopで1つずつリンクを「★リンク1★」のように置換できればと試してみたのですが、上記のソースでは元のソースコードに変化がなかったです。
みなさまのお知恵を拝借したいです。
お願いいたします。
補足情報(FW/ツールのバージョンなど)
win10
ruby 2.6.5p114 (2019-10-01 revision 67812)
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。