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

R中使用stringr包str_subset提取同时含text-1和text-2的字符串

解决方案

使用正向前瞻断言实现不限顺序的多关键词匹配,同时配合单词边界\b避免误匹配text-11、text-21这类包含更长数字后缀的内容,代码如下:

library(stringr)
texts <- c('I-have-text-2-and-text-8','I-have-text-1-and-text-2','I-have-text-7-and-text-8','I-have-text-2-and-text-1','I-have-text-4-and-text-5','I-have-text-11-and-text-12','I-have-text-13-and-text-32','I-have-text-8-and-text-6')
str_subset(texts, '^(?=.*\\btext-1\\b)(?=.*\\btext-2\\b)')

正则规则说明

  • ^ 锚定字符串开头,确保两个断言作用于完整字符串
  • (?=.*\\btext-1\\b) 是正向前瞻断言,要求字符串中任意位置存在完整的text-1关键词:
    • .* 匹配任意数量的任意字符,代表关键词可以出现在任意位置
    • \\b 是单词边界,避免text-1匹配到text-11这类内容
  • (?=.*\\btext-2\\b) 逻辑同上,要求字符串存在完整的text-2关键词
  • 两个断言无先后顺序要求,因此天然满足两个关键词出现顺序不限的筛选条件

运行后输出结果完全符合预期:

[1] "I-have-text-1-and-text-2" "I-have-text-2-and-text-1"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 19:06:04