You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言如何移除最后一个斜杠(含)之前的所有内容?

解决方法:提取最后一个斜杠后的内容

嘿,我来帮你调整代码,拿到你想要的结果!

你之前用的gsub('(.*)/\\w+', '\\1', x)其实是保留最后一个斜杠之前的内容——它把(.*)/(所有字符直到最后一个斜杠)加上后面的单词匹配到,然后替换成捕获组\\1(也就是斜杠前的部分),方向刚好反了。

方法1:修正正则表达式

我们可以反过来,把最后一个斜杠及之前的所有内容替换为空,只留下后面的部分:

x <- c('test/test/my', 'et/tom/cat', 'set/eat/is', 'sk / handsome')
gsub('.*/', '', x)

运行后会得到你预期的结果:

[1] "my"       "cat"      "is"       "handsome"

这里的正则.*/是贪婪匹配:.*会匹配任意字符(包括空格)直到最后一个/,然后把这整段内容替换为空,剩下的就是斜杠之后的部分了。

方法2:用R内置函数更简洁

其实R里有个专门处理这类路径/分隔符问题的函数basename(),完全不需要写正则,直接就能提取最后一个分隔符后的内容:

basename(x)

运行结果和上面的正则方法完全一致,而且代码更易读,适合处理这种类似路径的字符串。

内容的提问来源于stack exchange,提问作者angel0smile

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:48:20