1

我有一个字符串,我想从中提取某个部分:

原始字符串:/abc/d7_t/g-12/jkl/m-n3/pqr/stu/vwx

期望的结果:/abc/d7_t/g-12/jkl/

整个字符串中的字符数可以不同。它有字母、数字、下划线和连字符。我想基本上在第5个“/”之后剪断字符串

我尝试了一些正则表达式,但格式似乎存在一些错误。

4

3 回答 3

3

如果可以接受非正则表达式方法,那么如何:

s.split('/').take(n).join('/')+'/'

s如果您的字符串在哪里(在您的情况下:)/abc/d7_t/g-12/jkl/m-n3/pqr/stu/vwx

def cut_after(s, n)
  s.split('/').take(n).join('/')+'/'
end

然后

cut_after("/abc/d7_t/g-12/jkl/m-n3/pqr/stu/vwx", 5)

应该管用。不像正则表达式那样紧凑,但有些人可能会发现它更清晰。

于 2012-12-11T08:46:42.767 回答
2

正则表达式将是:%r(/(?:[^/]+/){4}). 请注意,在这种情况下,最好使用 %r 文字版本来避免转义斜杠。未转义的斜杠可能是您的格式错误的原因。

于 2012-12-11T08:47:24.217 回答
1

匹配除 '/' 之外的任何字符序列 4 次:-

(\/[^\/]+){4}\/
于 2012-12-11T08:37:25.323 回答