代码之家  ›  专栏  ›  技术社区  ›  rane

grepl在R中至少包含一次多模式

  •  0
  • rane  · 技术社区  · 8 年前

    目标: 返回至少一次带有“TAX”和“GAP”的元素,而不考虑它们在字符串中的位置。

    #STRING
    K <- c("TAX","TAX GAP","GAP TAX","GAP of TAX","GAP") # 1st , 5th should be FALSE
    
    #Solution
    K[grepl("TAX",K) & grepl("GAP",K)]
    
    # WRONG apporach
    grepl("TAX|GAP",K)  --> Only one side
    grepl("TAX+GAP+",K) --> The positions are fixed , impossible to write all the possibilities
    

    我可以用regex在一行中编写多个grepl()语句吗?

    1 回复  |  直到 8 年前
        1
  •  1
  •   Tim Biegeleisen    8 年前

    如果你真的想用一个电话 grepl

    \bTAX\b.*\bGAP\b|\bGAP\b.*\bTAX\b
    

    此模式使用 检查两个订单 TAX GAP 可能发生。还要注意的是 和 被单词边界标记包围( \b )在每一边,以确保我们不会意外匹配例如。 当它碰巧出现在一个较大单词的子串中时,比如 TAXES

    grepl("\\bTAX\\b.*\\bGAP\\b|\\bGAP\\b.*\\bTAX\\b", K)
    [1] FALSE  TRUE  TRUE  TRUE FALSE