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

grepl在R中至少包含一次多模式,r,regex,grepl,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("T

目标: 返回至少一次带有“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
#字符串
K只有一面
grepl(“TAX+GAP+”,K)-->头寸是固定的,不可能写出所有的可能性
我可以用正则表达式在一行中写入多个grepl()语句吗?


欢迎使用任何其他方法

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

\bTAX\b.*\bGAP\b|\bGAP\b.*\bTAX\b
此模式使用一个替代选项来检查可能出现
税务
差额
的两个订单。还要注意的是,
TAX
GAP
两侧都有单词边界标记(
\b
),以确保我们不会意外匹配,例如,
TAX
出现在较大单词(如
TAX
)的子字符串中

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

谢谢你的好意。但我必须承认,我贴了一个糟糕的例子,那是一个英语的情况,我的实际情况是处理类似汉字的情况。“名词”之前的“形容词”(