ruby-on-rails - 如何使用正则表达式模式从 URL 中提取参数

标签 ruby-on-rails ruby regex nokogiri

我在匹配表达式时遇到了问题。我想从使用 Nokogiri 提取的链接中提取“代码”参数,所以我尝试了:

event_id = a.attr("href").match(/\?code=(\d+)/)[1]

不幸的是,提取的是整个查询字符串:

?code=768140119

仅获取参数值而不获取其他任何内容的正确方法是什么?

最佳答案

不要使用正则表达式,使用经过良好测试的轮子。

鲁比的 URI类(class)是你的 friend ,特别是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 很容易,只需将节点视为哈希即可:

require 'nokogiri'

doc = Nokogiri::HTML("
<html>
  <body>
    <a href='path/to/foo'>bar</a>
  </body>
</html>
")

doc.at('a')['href'] # => "path/to/foo"

您不需要浪费时间输入 attr(...)

关于ruby-on-rails - 如何使用正则表达式模式从 URL 中提取参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39478722/

相关文章:

ruby - 尝试访问 compass-core-1.0.0.alpha.16/stylesheets/.listen_test 时,compass watch 命令出错

java - 为什么在 `(.+?)`后面加一个空格就可以完全改变结果

ruby-on-rails - 为未命名为 ":id"的数据库设置主键

ruby-on-rails - 从 IDE 运行 rake 任务时出错

ruby-on-rails - RubyMine Rails 脚本调试,如何使 lib 类可见

python - 使用 Python 从文本中提取 IBAN

Java 正则表达式 : Remove (double) negative look ahead and look behind

ruby-on-rails - 在 Ruby on Rails 中命名模型 'date' 中的字段是有问题的还是不好的做法?

ruby-on-rails - gem install ruby​​-odbc -v '0.99995' 无法在 ubuntu 11.10 上安装

ruby-on-rails - 如何使用表单设置cookie