R语言如何删除横杠后内容同时保留X-12等指定车型编号?
解决方案
你遇到的问题核心是没有区分开车型内部的连字符和车型与颜色之间的分隔连字符。观察示例可以发现,所有待删除的颜色信息都固定出现在字符串最后一个「前后带空格的连字符 -」之后,只要匹配删除这部分内容,就完全不会影响车型编号里的连字符(不管车型里的连字符前后有没有空格都不受干扰)。
你可以直接用stringr包的str_remove实现,代码如下:
library(stringr) result <- str_remove(x, "\\s-\\s[^-]+$")
如果不想加载额外包,用R基础函数sub也可以实现同样效果:
result <- sub("\\s-\\s[^-]+$", "", x)
结果验证
运行后可以直接和你给出的期望输出比对:
identical(result, desired_output) #> [1] TRUE
正则逻辑说明
\\s-\\s:匹配前后带空格的连字符,也就是车型和颜色的固定分隔符[^-]+:匹配所有不含连字符的字符,确保只会匹配到最后一个分隔符之后的内容$:限定匹配到字符串末尾,保证仅删除尾部的颜色信息
内容的提问来源于stack exchange,提问作者Brendi-A
相关产品推荐
相关产品推荐

