正则表达式去除路径中的文件名

11

我该如何设计一个正则表达式脚本,以从路径中删除文件名?问题是,这些路径可能会出现各种棘手的情况。

路径可能包含以下内容:

1: "Folder1/Folder2/Folder3.1234/folder4.5678/ApplesandOranges.txt","MoreInfo","EvenMoreInfo"
2: "Folder1/Folder2/Folder3.1234/folder4.91011/","MoreInfo","EvenMoreInfo"

甚至更多

3: "Folder1/Folder2/Folder3.1234/folder4.5678/ApplesandOranges.zip?CatsAndDogs.txt","MoreInfo","EvenMoreInfo"

在第1和第3种情况下,我希望最终得到:

Folder1/Folder2/Folder3.1234/folder4.5678/

虽然第二个返回为此也可以被接受

Folder1/Folder2/Folder3.1234/folder4.5678/ApplesandOranges.zip

虽然不是首选方案。

在第二种情况下,它将完全跳过该行,因为没有文件名。

有什么建议吗?

使用文本编辑器通过标准正则表达式。不使用java等。

注意:路径只是一个示例。可能会有50个文件夹。并非所有时候都是仅有4个文件夹。


1
s/.*\/(.*)/\1/是什么意思? - ooga
3个回答

21

您可以使用类似以下的简单正则表达式:

(.*\/).*

演示

在此输入图片描述

正如您所看到的,这个想法是通过使用 (.*\/) 捕获所有内容直到最后一个斜杠,并丢弃其余的 .*。请查看上面的替换部分。


啊...那个方法可以行,但你让我意识到了拼图的另一块。我会更新原帖来反映这点。 - RpTheHotrod
其实,你知道吗,我可以使用你的答案。我只需将我的数据文件分成两部分。一部分包含除了文件路径之外的所有内容,另一部分只包含文件路径,并使用你的修复方法。谢谢! - RpTheHotrod
Fede,很遗憾,不行。不过,根据你的答案,我想出了一个解决方案。我会标记为已回答。如果我有足够的声望,我会点赞的! - RpTheHotrod

5
你可以使用这个。
[^\/]+$

'$'匹配字符串结尾的位置,而 '[^/]+' 则匹配任何不含 '/' 的字符串。


1
这个怎么样?
@"^.*[\/]"

output result


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接