0

我想知道是否有人知道如何形成一个正则表达式,这将有助于匹配 utp 最后一次出现的斜线文件路径,例如:

fred/george/simpson/kill应该得到结果-->fred/george/simpson/

abc/def/ghi/..v/file.jpg应该得到结果-->abc/def/ghi/..v/

任何意见,将不胜感激。

感谢您的回复实际上我想重新构建这个问题,我不确定我是否应该将它作为一个新线程开始......我实际上需要匹配正则表达式中两个“/”之间的所有内容,例如:tom/jack/sam /jill/ ---> 我需要匹配 jill

并且在这种情况下还需要匹配 tom/jack/sam(没有最后一个'/')

想法赞赏!

4

5 回答 5

3

你也许可以File.dirname在这里使用。

> File.dirname("fred/george/simpson/kill")
=> "fred/george/simpson"
> File.dirname("abc/def/ghi/..v/file.jpg")
=> "abc/def/ghi/..v"

然后,如果需要,您可以附加一个斜杠。

于 2013-08-03T09:44:54.720 回答
1

您可能应该在没有正则表达式的情况下执行此操作。只需找到最右边的/并从那里切片。

file = 'fred/george/simpson/kill'
last_slash = file.rindex('/')
parent_file = file[0..last_slash] if last_slash

=>fred/george/simpson/
于 2013-08-03T09:52:41.397 回答
0

用作[^\/]*$图案:

'fred/george/simpson/kill'.sub(/[^\/]*$/, '') => "fred/george/simpson/"
'abc/def/ghi/..v/file.jpg'.sub(/[^\/]*$/, '') => "abc/def/ghi/..v/"
于 2013-08-03T09:46:56.660 回答
0

试试这个正则表达式:

((?<=/).[^/]*?)$

并且 repcae 与 '' 匹配;

于 2013-08-03T09:49:21.440 回答
0

正则表达式并不适合所有人。Rob Pike 有理由警告他们。

(.*\/).*\/$

话虽这么说,上述(未经测试!)将匹配您在捕获组 1 中想要的内容。

让我提醒您:即使您不了解它们,最好仔细思考为什么要使用捕获组。bsd的答案​​显然更好。

于 2013-08-03T09:52:47.797 回答