删除字符串中最后一个正斜杠之前的所有内容。

6

我有一个这样的字符串:

"vehicles/vehicle_type/filename.csv"

我只想保留以下内容:
"filename.csv"

我尝试过这个:

sub('/^(.*[\\\/])/', "", the_string)

但是会收到一个"字符串中未识别的转义符"错误。

不知道 r 是什么,但如果你真的想要替换,可以使用这个子句 /^(?:[^\/]*\/)+/。如果你只想匹配末尾,可以使用这个 /[^\/]+$/ - user557597
1个回答

38
要获取文件路径的末尾,你可以简单地使用basename()函数。
x <- "vehicles/vehicle_type/filename.csv"
basename(x)
# [1] "filename.csv"

或者,如果您想继续使用正则表达式,请调整sub()函数的调用方式。

sub(".*/", "", x)
# [1] "filename.csv"

.* 移除所有内容,所以 .*/ 移除所有内容直到最后一个 /(因为前面的一个已经包含在“所有内容”中了)。


请注意, basename 仅适用于字符,因此取决于路径如何读入R中,您可能需要执行 basename(as.character(x))。有时当列包含路径名时, R会将它们读取为因子。 - mikey
优雅且有用的解决方案! - Evan M

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