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

时间:2018-09-21 03:31:32

标签: r regex grepl

目标: 至少一次返回带有“ 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

我可以使用正则表达式在一行中编写多条grepl()语句吗?

欢迎使用其他方法

1 个答案:

答案 0 :(得分:1)

如果您确实要使用对grepl的单个调用,那么我们可以尝试使用以下单个正则表达式模式:

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

此模式使用替代来检查可能发生TAXGAP的两个顺序。另请注意,TAXGAP的两边都被单词边界标记(\b)包围,以确保我们不会意外匹配例如TAX碰巧出现在较大字词的子串中,例如TAXES

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