在最后前进或后退斜线之前的所有内容的正则表达式

时间:2010-10-20 20:12:00

标签: regex

我需要一个正则表达式,它会在字符串中找到所有内容,包括最后一个\或/.

例如,c:\ directory \ file.txt应该导致c:\ directory \

3 个答案:

答案 0 :(得分:46)

试试这个:(Rubular)

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

说明:

^      Start of line/string
(      Start capturing group
.*     Match any character greedily
[\\\/] Match a backslash or a forward slash
)      End the capturing group  

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

如果您的语言支持(或要求)它,您可能希望使用与/不同的分隔符作为正则表达式,这样您就不必转义正斜杠。

此外,如果您正在解析文件路径,您可能会发现您的语言已经有一个库来执行此操作。这比使用正则表达式更好。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

例如,如果您使用 sed ,则可以执行此操作以输出最后一个斜杠之前的所有内容:

echo "/home/me/documents/morestuff/before_last/last" | sed s:/[^/]*$::

将输出:

/home/me/documents/morestuff/before_last