Ruby,捕获字符串的结尾部分

时间:2012-12-12 14:41:13

标签: ruby regex string

我有以下格式的许多字符串。只有最后一个“/”之后的部分是不同的......

"http://www.google.com/calendar/feeds/user_name%40gmail.com/public/basic/_8gq3ecpo6gp3ib9n8h0jeb9k8l13ab9o85346b9k8gqk4g9h74s4aea26s"

我只需捕获最后一个“/".

之后的部分

感谢任何帮助。

3 个答案:

答案 0 :(得分:6)

str.split('/').last其中str是您的字符串

答案 1 :(得分:3)

不必要时不要使用正则表达式

s = "http://www.google.com/calendar/feeds/user_name%40gmail.com/public/basic/_8gq3ecpo6gp3ib9n8h0jeb9k8l13ab9o85346b9k8gqk4g9h74s4aea26s"

s.split('/').last # => "_8gq3ecpo6gp3ib9n8h0jeb9k8l13ab9o85346b9k8gqk4g9h74s4aea26s"

答案 2 :(得分:3)

/上拆分字符串是一种方式,如其他答案所示。

网址基本上是文件名,因此您也可以使用File.basename

File.basename('http://example.com/foo')
=> "foo"

或者,在您的情况下:

File.basename("http://www.google.com/calendar/feeds/user_name%40gmail.com/public/basic/_8gq3ecpo6gp3ib9n8h0jeb9k8l13ab9o85346b9k8gqk4g9h74s4aea26s")
=> "_8gq3ecpo6gp3ib9n8h0jeb9k8l13ab9o85346b9k8gqk4g9h74s4aea26s"

从技术上讲,正确的方法是将URL视为原样,并使用专门设计的工具将其拆分:

require 'uri'
uri = URI.parse("http://www.google.com/calendar/feeds/user_name%40gmail.com/public/basic/_8gq3ecpo6gp3ib9n8h0jeb9k8l13ab9o85346b9k8gqk4g9h74s4aea26s")
File.basename(uri.path)
=> "_8gq3ecpo6gp3ib9n8h0jeb9k8l13ab9o85346b9k8gqk4g9h74s4aea26s"

但是,以另一种方式做这件事非常简单,而且通常是安全的。