我在匹配表达式时遇到了麻烦。我想从使用Nokogiri提取的链接中提取"code"参数,所以我尝试:
event_id = a.attr("href").match(/?code=(d+)/)[1]
不幸的是,提取的是整个查询字符串:
?code=768140119
只获取参数值而不获取其他值的正确方法是什么?
不要使用正则表达式,使用经过良好测试的wheel
Ruby的URI类是你的朋友,特别是decode_www_form
:
require 'uri'
uri = URI.parse('http://foo.com?code=768140119')
uri.query # => "code=768140119"
URI.decode_www_form(uri.query) # => [["code", "768140119"]]
URI.decode_www_form(uri.query).to_h # => {"code"=>"768140119"}
对于提取标签参数的值,Nokogiri使其变得简单,只需将Node视为哈希:
require 'nokogiri'
doc = Nokogiri::HTML("
<html>
<body>
<a href='path/to/foo'>bar</a>
</body>
</html>
")
doc.at('a')['href'] # => "path/to/foo"
你不需要浪费时间输入attr(...)