使用正则表达式很容易:
s = '<div id="test">
accno: 123232323 <br>
id: 5443534534534 <br>
name: test_name <br>
url: www.google.com <br>
</div>'
p s.scan(/\s+(.*?)\:\s+(.*?)<br>/).map.with_object({}) { |i, h| h[i[0].to_sym] = i[1].strip }
或者你可以精确你的键(accno、id、name、url),比如([a-z]+)
它们只包含小写字母:
p s.scan(/\s+([a-z]+)\:\s+(.*?)<br>/).map.with_object({}) { |i, h| h[i[0].to_sym] = i[1].strip }
结果:
{:accno=>"123232323", :id=>"5443534534534", :name=>"test_name", :url=>"www.google.com"}
更新
的情况下:
<div id="test"> accno: 123232323 id: 5443534534534 name: test_name url: www.google.com </div>
正则表达式将是:
/([a-z]+)\:\s*(.*?)\s+/
([a-z]+)
- 这是哈希键,它可以包含-
or _
,然后像这样添加它:([a-z]+\-_)
。该方案假定在键之后:
(可能带有空格),然后是一些文本直到空格。或者(\s+|<)
如果行结束没有空格,则在最后:url: www.google.com</div>