正規表現でタグ内の文字列とタグを取得する方法(ruby)


aaaaaaaaa
<h2>h2です。</h2>
aaaaaaaaa
<h3>h3です。</h3>
aaaaaaaaa
<h2>h2です。</h2>
aaaaaaaaa
<h2>h2です。</h2>
aaaaaaaaa

上記のような文字列があります。
この中から、タグと中身の文字を出現する順番通りに全て取得したいと考えています。
取得するタグはh2とh3しかありません。

【求める結果】
h2,h2です
h3,h3です
h2,h2です
h2,h2です
※カンマは区別のために記載。

正規表現で可能だと思うのですが、どのようにすればよいでしょうか?

回答の条件
  • 1人1回まで
  • 登録:
  • 終了:2016/05/09 22:28:02
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:a-kuma3 No.1

回答回数4973ベストアンサー獲得回数2154

ポイント300pt

こんな感じで。

s = <<__INPUT__
aaaaaaaaa
<h2>h2です。</h2>
aaaaaaaaa
<h3>h3です。</h3>
aaaaaaaaa
<h2>h2です。</h2>
aaaaaaaaa
<h2>h2です。</h2>
aaaaaaaaa
__INPUT__

s.scan(/<(h[23])>(.*?)<\/\1>/) { |m|
    puts "#{m[0]},#{m[1]}"
}

正規表現は

<(h[23])>(.*?)<\/\1>

で、String#scan を使って抽出するのが良いでしょう。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません