在Ruby中提取URL参数

破坏者

我想从网址中提取参数。我有以下路径模式:

pattern = "/foo/:foo_id/bar/:bar_id"

和示例网址:

url = "/foo/1/bar/2"

我想获取{foo_id:1,bar_id:2}。我试图将模式转换成这样的东西:

"\/foo\/(?<foo_id>.*)\/bar\/(?<bar_id>.*)"

当我想在网址中替换反斜杠时,我在第一步失败:

formatted = pattern.gsub("/", "\/")

您知道如何修复此gsub吗?也许您知道更好的解决方案。

编辑:这是普通的Ruby。我没有使用RoR。

乔丹跑步

就像我在上面说的,您只需要在Regexp文字中转义斜线,例如/foo\/bar/从字符串定义Regexp时,没有必要:与Regexp.new("foo/bar")产生相同的Regexp /foo\/bar/

至于更大的问题,这是我要解决的方法,我想这几乎是您计划解决的方法:

PATTERN_PART_MATCH = /:(\w+)/
PATTERN_PART_REPLACE = '(?<\1>.+?)'

def pattern_to_regexp(pattern)
  expr = Regexp.escape(pattern) # just in case
           .gsub(PATTERN_PART_MATCH, PATTERN_PART_REPLACE)
  Regexp.new(expr)
end

pattern = "/foo/:foo_id/bar/:bar_id"
expr = pattern_to_regexp(pattern)
# => /\/foo\/(?<foo_id>.+?)\/bar\/(?<bar_id>.+?)/

str = "/foo/1/bar/2"
expr.match(str)
# => #<MatchData "/foo/1/bar/2" foo_id:"1" bar_id:"2">

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从 URL Excel 中提取参数

来自分类Dev

在URL查询中提取参数名称

来自分类Dev

如何从Ruby中的icalendar事件中提取参数?

来自分类Dev

在Ruby中使用Regex从URL中提取数字

来自分类Dev

如何从URL字符串Ruby中提取数字

来自分类Dev

Jekyll 使用 Ruby 从 url 中提取文件名

来自分类Dev

Python-Requests,从字符串中提取URL参数

来自分类Dev

如何在Excel中的URL中提取参数?

来自分类Dev

从angular2的URL中提取可选参数值

来自分类Dev

从 URL 中提取 ID

来自分类Dev

从.url文件中提取URL

来自分类Dev

在Express中提取查询参数?

来自分类Dev

在Julia中提取参数类型

来自分类Dev

Ruby on Rails 4:是否从令牌响应中提取Oauth2参数?

来自分类Dev

从文件中提取URL链接

来自分类Dev

从json文件中提取URL

来自分类Dev

从CSV文件中提取URL

来自分类Dev

从文件中提取URL链接

来自分类Dev

从大文件中提取URL

来自分类Dev

从短信中提取 URL

来自分类Dev

从 URL 中提取特定部分

来自分类Dev

无法从301路由器重定向上的URL中提取:page参数

来自分类Dev

使用BeautifulSoup从URL中提取URL列表

来自分类Dev

如何在Ruby中提取整数的符号?

来自分类Dev

返回值未在Ruby中提取

来自分类Dev

ruby:从嵌套的json中提取字段

来自分类Dev

使用Ruby从视频中提取音频

来自分类Dev

从 Ruby 中的哈希中提取特定键

来自分类Dev

从字符串中提取参数