Ruby regexp:捕获url的路径

krn*_*krn 13 ruby regex

从我想要提取其路径的任何URL.

例如:

网址:https://stackoverflow.com/questions/ask 路径:问题/问题

这应该不难:

url[/(?:\w{2,}\/).+/]
Run Code Online (Sandbox Code Playgroud)

但我认为我使用错误的模式'忽略这个'('?:' - 不起作用).什么是正确的方法?

ctc*_*rry 26

我建议你不要用正则表达式做这个,而是使用内置的URI lib:

require 'uri'

uri = URI::parse('http://stackoverflow.com/questions/ask')

puts uri.path # results in: /questions/ask
Run Code Online (Sandbox Code Playgroud)

它有一个领先的斜杠,但这很容易处理=)

  • 我同意,使用内置类是最好的.但是,如果您有兴趣学习如何解析URI的原因,请查看[源代码到lib/uri/common.rb](https://github.com/evanphx/rubinius/blob/master/lib/ uri/common.rb#L483) - 我已经链接到Rubinius的源代码,因为我发现它很容易阅读.(非常复杂的)正则表达式位于文件的顶部,绝对URI位于第188行. (2认同)