質問: 正規表現でタグ内の文字列とタグを取得する方法(ruby) aaaaaaaaa h2です。 aaaaaaaaa h3です。 aaaaaaaaa h2です。 aaaaaaaaa h2です。 aaaaaaaaa 上記のような文字列があります。 この中から、タグと中身の文字を出現する順番通りに全て取得したいと考えています。 取得するタグはh2とh3しかありません。 【求める結果】 h2,h2です h3,h3です h2,h2です h2,h2です ※カンマは区別のために記載。 正規表現で可能だと思うのですが、どのようにすればよいでしょうか?
回答: こんな感じで。 ``` s = <<__INPUT__ aaaaaaaaa h2です。 aaaaaaaaa h3です。 aaaaaaaaa h2です。 aaaaaaaaa h2です。 aaaaaaaaa __INPUT__ s.scan(/<(h[23])>(.*?)<\/\1>/) { |m| puts "#{m[0]},#{m[1]}" } ``` 正規表現は ``` <(h[23])>(.*?)<\/\1> ``` で、String#scan を使って抽出するのが良いでしょう。