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

R语言筛选字符串指定位置含01-12数值的data.table子集

解决方案

方法1:提取子串后判断数值范围

直接提取目标位置的字符转为整数,用data.table自带的%between%运算符判断区间,逻辑清晰易读:

library(data.table)
# 构造测试数据
x <- data.table(V1 = c('ACCN-NJ-A55O-01A-11D-A25L-08','ACCN-NJ-A55O-11D-11D-A25L-08', 'ACCN-05-4249-01A-01D-1105-08', 'ACCN-S2-AA1A-15C-12D-A397-08'))
# 筛选逻辑:提取第14-15位字符转整数后判断是否在1-12区间
result <- x[as.integer(substr(V1, 14, 15)) %between% c(1, 12)]

方法2:用grepl正则匹配

如果偏好正则写法,可以直接匹配指定位置的数字范围:

result <- x[grepl('^.{13}(0[1-9]|1[0-2])', V1)]

正则说明

  • ^ 匹配字符串开头
  • .{13} 匹配前13个任意字符,刚好定位到第14位起始位置
  • (0[1-9]|1[0-2]) 匹配01到09、10到12的有效两位数

输出结果

两种方法得到的结果一致,符合预期:

V1
1: ACCN-NJ-A55O-01A-11D-A25L-08
2: ACCN-NJ-A55O-11D-11D-A25L-08
3: ACCN-05-4249-01A-01D-1105-08

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 19:45:03