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

如何在R语言中按分隔符“-”提取字符串的最右侧部分?

提取分隔符最右侧字符串的可行方案

针对你给出的SKU向量:

SKU <- c("PPM-UA-L", "RVK-JI-XL", "KMN-WO-XS", "YYL-S")

原固定索引的写法无法适配分隔符数量不一致的情况,以下是几种可靠的解决方案:

方法1:用stringr::str_extract(推荐)

利用正则表达式直接匹配最后一个-之后的内容,一步到位:

library(stringr)
size <- str_extract(SKU, "(?<=-)[^-]+$")

正则说明:

  • (?<=-):正向预查,确保目标内容前有一个-
  • [^-]+:匹配任意非-的字符(至少一个)
  • $:匹配字符串末尾,保证取到的是最后一段

方法2:基于str_split的灵活取值

如果想继续用str_split,可以遍历拆分后的结果,取每个列表元素的最后一项:

size <- sapply(str_split(SKU, "-"), tail, n = 1)
# 要是用tidyverse的purrr包,还能更简洁:
# size <- purrr::map_chr(str_split(SKU, "-"), last)

方法3:Base R原生实现(无需额外包)

用基础函数组合实现,不需要加载第三方包:

# 找到每个字符串中最后一个"-"的位置
last_dash_pos <- sapply(gregexpr("-", SKU), tail, n = 1)
# 从该位置的下一位开始提取字符串
size <- substring(SKU, last_dash_pos + 1)

以上三种方法运行后,得到的size结果均为:"L" "XL" "XS" "S",完全适配所有情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 02:15:34