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

如何在字符串列中检测是否同时包含medication和infant两个词?

在字符串列中筛选同时包含指定两个词的行

首先构造示例数据:

library(dplyr)
library(stringr)

df <- tibble(
  ID = c(1, 2, 3),
  Col1 = c("Quick Brown fox medication", "Brown fox infant", "Quick medication fox infant")
)

方法1:使用str_detect结合逻辑与(&)

你之前尝试str_detect未成功,大概率是没同时对两个关键词做检测并取交集。可以分别检测两个词的存在,再用&确保两个条件同时满足:

result <- df %>%
  filter(str_detect(Col1, "medication") & str_detect(Col1, "infant"))

方法2:使用正则表达式正向预查

如果想用单个正则表达式实现,可利用正向预查语法,确保两个词都存在(词的顺序不影响):

result <- df %>%
  filter(str_detect(Col1, "(?=.*medication)(?=.*infant)"))

两种方法都会得到预期结果:

# 输出结果
result
#> # A tibble: 1 × 2
#>      ID Col1                         
#>   <dbl> <chr>                        
#> 1     3 Quick medication fox infant

说明:

  • str_detect默认匹配字符串任意位置的子串,无需额外处理词的位置
  • 正则方法里的(?=.*xxx)是正向预查,含义是“字符串中存在xxx子串”,多个预查组合即可要求同时满足所有条件

内容的提问来源于stack exchange,提问作者Ahir Bhairav Orai

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 19:20:30