R语言字符串处理:提取Blume前内容删除Blume及之后字符
解决方案
使用stringr包的str_remove()函数配合正则表达式即可实现需求:匹配每个字符串中Blume及其前后不需要的内容并删除,无Blume的字符串不会被修改,完全符合要求。
完整可运行代码
# 若未安装stringr先执行:install.packages("stringr") library(stringr) # 构造示例数据框 df <- data.frame(x = c("Santiria laevigata Blume f. laevigata", "Santiria laevigata", "Santiria laevigata Blume f. glabrifolia (Engl.) H.J.Lam")) # 处理x列 df$x <- str_remove(df$x, "\\s*Blume.*") # 输出结果 print(df)
运行结果
x 1 Santiria laevigata 2 Santiria laevigata 3 Santiria laevigata
规则说明
正则表达式\\s*Blume.*的匹配逻辑:
\\s*:匹配Blume前的0个或多个空格,避免处理后字符串末尾残留空格Blume:匹配固定字符Blume.*:匹配Blume之后的所有任意字符
如果不想加载第三方包,用R原生函数也可以实现,写法如下:
df$x <- sub("\\s*Blume.*", "", df$x)
内容的提问来源于stack exchange,提问作者Anh
相关产品推荐
相关产品推荐

