LoginSignup
9
1

More than 5 years have passed since last update.

正規表現でHTML要素を別の要素に置換する

Last updated at Posted at 2018-09-15

Rubyでhタグをpタグに置換する必要があり、調べてもあまり参考になるサイト等がなかったので共有します。
ニッチすぎて誰が読むんだって感じですが、こういう事も出来るよって参考程度に、、、

まずしたい事は


hogehoge<h2>fugafuga</h2>oraora を hogehoge<p>fugafuga</p>oraora にしたい!!

まず素のh1タグをpタグにしたいだけなら


Hoge = "hogehoge<h1>fugafuga</h1>oraora"
Hoge.gsub(/<h1>(.*?)<\/h1>/, '<p>\1</p>') 
# => "hogehoge<p>fugafuga</p>oraora"

で置換できますが、要素に属性を付けたい場合や、h2からh4タグだけを置換したい場合は少し応用が必要です。

h2からh4をpタグに置換したい場合は


Hoge2 = "hogehoge<h1>fugafuga</h1>oraora<h2>uraura</h2>warawara"
Hoge2.gsub(/<h[2-4]>(.*?)<\/h[2-4]>/, '<p>\1</p>')
# => "hogehoge<h1>fugafuga</h1>oraora<p>uraura</p>warawara"

としたり、要素に属性が付いている場合は

Hoge3 = "hogehoge<h3 class='foobar'>fugafuga</h3>oraora"
Hoge3.gsub(/<h[2-4](.*)?>(.*?)<\/h[2-4]>/, '<p\1>\2</p>')
# => "hogehoge<p class='foobar'>fugafuga</p>oraora"

また、属性を取らなくて良いなら最初から

Hoge3.gsub(/<h[2-4] .*?>(.*?)<\/h[2-4]>/, '<p>\1</p>') 
# => "hogehoge<p>fugafuga</p>oraora"

とすれば属性が入っていてもいなくても置換できます!

もっといい方法や、間違っている箇所がありましたら指摘をお願い致します!!!

9
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
1