正则表达式:匹配最后一个正斜杠或反斜杠之前的所有内容

22

我需要一个正则表达式,它可以查找字符串中最后一个 \ 或 / 及其之前的所有内容。

例如,c:\directory\file.txt 应该返回 c:\directory\

3个回答

60

尝试这个: (Rubular)

/^(.*[\\\/])/

解释:

^      行/字符串的开头
(      开始捕获组
.*     贪婪地匹配任何字符
[\\\/] 匹配反斜杠或正斜杠
)      结束捕获组

由于 .* 的贪婪性,匹配到的斜杠将是最后一个。

如果你的语言支持(或需要)它,你可能希望使用一个不同的定界符来表示正则表达式,这样你就不必转义正斜杠了。

此外,如果你正在解析文件路径,你可能会发现你的语言已经有一个库可以做到这一点。这比使用正则表达式更好。


3
+1 对于 ...你可能会发现你的语言已经有了一个能够做到这一点的库... - Carlos Muñoz
没错,在R中,它是basename()函数。 - Kyouma

4

^(.*[\\\/])[^\\\/]*$


2
如果你正在使用sed,例如,你可以执行以下操作将最后一个斜杠之前的所有内容输出:
echo "/home/me/documents/morestuff/before_last/last" | sed s:/[^/]*$::

它将输出:
/home/me/documents/morestuff/before_last

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