スリ飯屋Malankaのフリーエンジニアな日々

IT実務未経験から約1年、東京でフリーランスのRuby on Railsエンジニアに転職。約2年半、大阪中崎町でスリランカカレーの間借りしてました。フリーランスエンジニアになるためのノウハウ、スリランカの事を発信していきます。

【Rails】aタグからhref属性の値を正規表現で抽出する方法

【Rails】aタグからhref属性の値を正規表現で抽出する方法

こんにちは、mahです。

このブログでは、僕がIT未経験から約1年でフリーランスエンジニアになるまでの過程、ノウハウなどを書いていきます。

今回は、aタグからhref属性の値を正規表現で抽出する方法 についてです。

一発で抽出出来るヘルパーメソッドがあるかと思いましたが、見つけられませんでした...笑

ただ、調べてるとドンピシャなのを見つけたのでご紹介します。

aタグからhref属性の値を正規表現で抜き出す方法

結論から言うと、

  • href\s=\s"([^"]*)"

という正規表現を使うことで実現可能です。

このstack over flowの回答がドンピシャでした。

stackoverflow.com

You should be able to use a regular expression like this:

href\s=\s"([^"]*)" See this Rubular example of that expression.

The capture group will give you the URL, e.g.:

link = "<a href=\"https://www.congress.gov/bill/93rd-congress/house-bill/11461\">H.R.11461</a>"
match = /href\s*=\s*"([^"]*)"/.match(link)
if match
  url = match[1]
end

やり方

  1. res = /href\s*=\s*"([^"]*)"/.match(対象のaタグ) のように記述。

  2. res[1] のようにすると、aタグのhref属性が取り出せます。

href属性に /aboutをもつaタグから、/aboutを正規表現で抽出するサンプル

Rails Consoleで確認します。

[19] pry(#<#<Class:0x00007fa4bff08f78>>)> res = /href\s*=\s*"([^"]*)"/.match('<a class="global-header-link" href="/about" target="_blank" rel="noopener">About</a>')
=> #<MatchData "href=\"/about\"" 1:"/about">

[20] pry(#<#<Class:0x00007fa4bff08f78>>)> res[1]
=> "/about"

このように、href属性の /about を抽出することが出来ました。


以上、

aタグからhref属性の値を正規表現で抽出する方法 について

でした。


少しでも同じ問題で困っている方の参考になれば幸いです。

このブログでは、

僕がIT未経験から約1年でフリーランスエンジニアになるまでの過程、

ノウハウなどを書いています。




初めての方は下記のオススメ記事もどうぞ


www.malanka.tech


www.malanka.tech


www.malanka.tech


www.malanka.tech


www.malanka.tech




最後までお読み頂きありがとうございました★


もしよかったらTwiiterのフォローもお願いします★