現在tableという変数に入っているこのような文字列が入っています。(tableに囲まれている部分は10個ほどありすべてハッシュに変換したいのですが文量が多くなってしまうので省略させていただきました)
<table><tr><th>場所</th><td>家</td></tr><tr><th>ナンバー</th><td>〒000-0000</td></tr><tr><th>住所</th><td>東京都</td></tr><tr><th>最寄り駅</th><td>東海道線</td></tr></table><h3 class="heading">東北地方</h3><table><tr><th>場所</th><td>会社</td></tr><tr><th>ナンバー</th><td>〒111-1111</td></tr><tr><th>住所</th><td>福島県</td></tr><tr><th>最寄り駅</th><td>東北線</td></tr></table>~~(以後tableタグに囲まれているものと囲まれていないものが続く)そこからこのようにハッシュに変換したものを配列に入れてこのようにしたいです。
{"場所"=>"家", "ナンバー"=>"〒000-0000", "住所"=>"東京都", "最寄り駅"=>"東海道線"}
{"場所"=>"会社", "ナンバー"=>"〒111-1111", "住所"=>"福島県", "最寄り駅"=>"東北線"}
~~(以後tableタグから抽出したハッシュが配列に入れられている)
どうすればよいか全くわからずとりあえず調べながらやったところ
ruby
1table = table.match(/\<table\>(\S+)\</table\>/).to_s 2 3p table 4# 出力結果 "<table><tr><th>場所</th><td>家</td></tr><tr><th>ナンバー</th><td>〒000-0000</td></tr><tr><th>住所</th><td>東京都</td></tr><tr><th>最寄り駅</th><td>東海道線</td></tr></table>" 5 6ary = table.split("</tr><tr>") 7 map{|pair| # <th>場所</th><td>家</td> 8 /<th>(.*)</th><td>(.*)</td>/ =~ pair 9 [$1,$2] 10 } 11h = Hash[*ary.flatten] 12answer = [h] 13 14p answer 15# 出力結果 {"場所"=>"家", "ナンバー"=>"〒000-0000", "住所"=>"東京都", "最寄り駅"=>"東海道線"}
このように一つ目のtableタグを抽出することはできたのですが、
matchメソッドで二個目以降のtableタグを抽出する方法が分からず、詰まってしまいました。
(+の部分を変えてみたりしましたが、自分の正規表現の理解が浅いためかわかりませんでした)
そのため、二個目以降のtableタグに囲まれた部分をどのような方法で抽出すればよいか教えていただきたいです。
わかりずらい質問かもしれませんが、よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/27 00:49