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

R语言中如何用正则表达式筛选不含前置小数点的B20值?

解决方案

要筛选出Value列包含B20且其前方无小数点的行,你可以使用带负向零宽断言的正则表达式,配合grep()的perl=TRUE参数启用高级正则语法:

B20 <- test[grep("(?<!\\.)B20", test$Value, perl = TRUE), ]

正则表达式解析

  • (?<!\.):负向后行断言,明确要求B20的前一个字符不能是小数点(正则里小数点需用\.转义,否则会匹配任意字符)
  • B20:匹配目标字符串本身

这个正则会精准排除I82.B20这类B20前带小数点的行,同时保留两种符合要求的情况:

  • B20单独作为Value值(第一行)
  • B20作为多值条目开头(第三行B20, E88.1)

验证输出

运行代码后得到的结果与你期望的一致:

> dput(B20)
structure(list(Value = c("B20", "B20, E88.1"), City = c("NY", "PA")), row.names = c(1L, 3L), class = "data.frame")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 02:52:23