スリ飯屋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 を抽出することが出来ました。




RailsやRubyを学びたい人へ


RailsやRubyを学びたい人は、

RailsHack(レイルズハック)という、

最近できた新しいプログラミングスクール(今なら通常価格69,800円が、早期割で29,800円!)か、

Udemy で下記のコースを受講すると良いです★


✅1. フルスタックエンジニアが教える 即戦力Railsエンジニア養成講座

✅2. 【はむ式】ハンズオンで学ぶRuby on Rails 6【Dockerにも触れられる】 <- おすすめ。ハムさんはReactやTypeScriptの教材も非常に丁寧。

✅3. はじめてのRuby on Rails入門-RubyとRailsを基礎から学びWebアプリケーションをネットに公開しよう




また、

Udemy は定期的にセールをやっていますし(90%OFFとかもザラ)、

「30日間なら返金できる」ので、

満足できなかった時でも安心です。


f:id:mah666hhh:20201129193352p:plain


【公式】RailsHack(レイルズハック)

【公式】Udemyで学んでみる