如何在grepl中使用多个关键字

How to use multiple keywords in grepl

这是一个字符串类型的向量:

a<-c("Recherche impliquant la personne humaine (RIPH) Médicaments 3",
 "Recherche impliquant la personne humaine (RIPH) Hors Produits de santé 3",
 "Recherche impliquant la personne humaine (RIPH) dispositif médical 1")

我想识别包含某些关键字的所有元素:

我首先识别所有包含单词“Recherche”的元素

grepl("recherche",a,ignore.case = TRUE)

[1] TRUE TRUE TRUE

现在我只想识别同时包含所有这些关键字的元素:

c("recherche", "impliquant", "personne", "humaine", "3")

结果一定是

[1] TRUE TRUE FALSE

我试过这个:

grepl(c("Recherche,impliquant , personne, humaine, 3"),a)

但它没有用,因为输出是:

FALSE FALSE FALSE

您可以使用多个前瞻 (?=...) 来做到这一点,其中每个前瞻断言关键字字符串中的任何位置都存在; (?i)用于使匹配不区分大小写:

grep("(?i)(?=.*recherche.*)(?=.*impliquant.*)(?=.*personne.*)(?=.*humaine.*)(?=.*3.*).*", 
 a,
 value = TRUE,
 perl = TRUE) 
[1] "Recherche impliquant la personne humaine (RIPH) Médicaments 3"           
[2] "Recherche impliquant la personne humaine (RIPH) Hors Produits de santé 3"

这个方法显然也适用于grepl;只需省略 `value = TRUE:

grepl("(?i)(?=.*recherche.*)(?=.*impliquant.*)(?=.*personne.*)(?=.*humaine.*)(?=.*3.*).*", 
     a,
     perl = TRUE) 
[1]  TRUE  TRUE FALSE