R:如何匹配不以其他模式开头的模式?

时间:2018-02-27 13:08:25

标签: regex pattern-matching grepl

我有一个列,其中包含一系列针对每个客户的产品,我希望在另一列中使用0或1进行识别。以下是一个示例:

products <- c("APV", "SAPV, APV", "SCA, FFMM, APV", "SCA, SAPV", "FFMM, APV", "FFMM", "SCA, SAPV, APV", "SCA, SAPV, FFMM, FFAC", "SCA, FFMM", "SAPV", "SCA", "SCA, APV", "SAPV, FFMM", "SCA, SAPV, FFMM, APV", "SAPV, FFMM, APV")

我想创建一个列名APV,用于标识列表中是否有APV,但只有“APV”,如果我只是使用

grepl("APV", products)

它还将识别SAPV。

我知道这是一个相对简单的问题,但我无法使其发挥作用

1 个答案:

答案 0 :(得分:1)

你需要像这样的单词边界

products <- c("APV", "SAPV, APV", "SCA, FFMM, APV", "SCA, SAPV", "FFMM, APV", "FFMM", "SCA, SAPV, APV", "SCA, SAPV, FFMM, FFAC", "SCA, FFMM", "SAPV", "SCA", "SCA, APV", "SAPV, FFMM", "SCA, SAPV, FFMM, APV", "SAPV, FFMM, APV")
grepl("\\bAPV\\b", products)

哪个收益

 [1]  TRUE  TRUE  TRUE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE  TRUE

查看expression on regex101.com的演示。