我有一个字符串,我想从中提取某个部分:
原始字符串:/abc/d7_t/g-12/jkl/m-n3/pqr/stu/vwx
期望的结果:/abc/d7_t/g-12/jkl/
整个字符串中的字符数可以不同。它有字母、数字、下划线和连字符。我想基本上在第5个“/”之后剪断字符串
我尝试了一些正则表达式,但格式似乎存在一些错误。
我有一个字符串,我想从中提取某个部分:
原始字符串:/abc/d7_t/g-12/jkl/m-n3/pqr/stu/vwx
期望的结果:/abc/d7_t/g-12/jkl/
整个字符串中的字符数可以不同。它有字母、数字、下划线和连字符。我想基本上在第5个“/”之后剪断字符串
我尝试了一些正则表达式,但格式似乎存在一些错误。
如果可以接受非正则表达式方法,那么如何:
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)
应该管用。不像正则表达式那样紧凑,但有些人可能会发现它更清晰。
正则表达式将是:%r(/(?:[^/]+/){4})
. 请注意,在这种情况下,最好使用 %r 文字版本来避免转义斜杠。未转义的斜杠可能是您的格式错误的原因。
匹配除 '/' 之外的任何字符序列 4 次:-
(\/[^\/]+){4}\/