我需要一个正则表达式,它可以查找字符串中最后一个 \ 或 / 及其之前的所有内容。
例如,c:\directory\file.txt 应该返回 c:\directory\
我需要一个正则表达式,它可以查找字符串中最后一个 \ 或 / 及其之前的所有内容。
例如,c:\directory\file.txt 应该返回 c:\directory\
尝试这个: (Rubular)
/^(.*[\\\/])/
解释:
^ 行/字符串的开头 ( 开始捕获组 .* 贪婪地匹配任何字符 [\\\/] 匹配反斜杠或正斜杠 ) 结束捕获组
由于 .*
的贪婪性,匹配到的斜杠将是最后一个。
如果你的语言支持(或需要)它,你可能希望使用一个不同的定界符来表示正则表达式,这样你就不必转义正斜杠了。
此外,如果你正在解析文件路径,你可能会发现你的语言已经有一个库可以做到这一点。这比使用正则表达式更好。
^(.*[\\\/])[^\\\/]*$
echo "/home/me/documents/morestuff/before_last/last" | sed s:/[^/]*$::
/home/me/documents/morestuff/before_last