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

在R语言中如何提取22k_与_res之间的子字符串

R 提取字符串指定区间内容方案

示例数据

你提供的测试向量如下:

a <- c("yhj-22k_loki_res", "jh_22k_lok_res", "fgdjh_22k_lk_res", "jhkkl_kkff_22k_lo_res", "j_22k_mm_res", "ko-jh_22k_lm_res")

方法1:使用stringr包(tidyverse生态,推荐)

利用正则的前后预查直接匹配目标区间,语法简洁:

# 加载包
library(stringr)
# 提取向量结果
result <- str_extract(a, "(?<=22k_).*?(?=_res)")

# 如果是处理数据框列,假设数据框为df,待处理列名为str_col
# df <- df %>% 
#   mutate(target = str_extract(str_col, "(?<=22k_).*?(?=_res)"))

运行后result的输出为:"loki" "lok" "lk" "lo" "mm" "lm",完全符合预期。

方法2:Base R 原生方法(无需安装额外包)

用原生的regmatches和regexpr函数实现,适合不想依赖第三方包的场景:

pattern <- "(?<=22k_).*?(?=_res)"
result <- regmatches(a, regexpr(pattern, a, perl = TRUE))

正则规则说明

用到的正则片段含义:

  • (?<=22k_):反向预查,要求匹配位置的前序内容是22k_,且不会把22k_计入提取结果
  • .*?:非贪婪匹配任意字符,保证匹配到第一个_res就停止,避免多匹配
  • (?=_res):正向预查,要求匹配位置的后序内容是_res,且不会把_res计入提取结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 10:24:07