grepl 在 R 中至少包含一次多重模式
grepl contain multi pattern at least one time in R
目标:
return 个元素 "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() 语句吗?
欢迎使用任何其他方法
如果您真的想使用对 grepl
的单个调用,那么我们可以尝试使用以下单个正则表达式模式:
\bTAX\b.*\bGAP\b|\bGAP\b.*\bTAX\b
此模式使用 交替 来检查可能出现 TAX
和 GAP
的两个顺序。另请注意,TAX
和 GAP
的每一侧都被单词边界标记 (\b
) 包围,以确保我们不会意外匹配,例如TAX
当它恰好出现在像 TAXES
.
这样的较大单词的子串中时
grepl("\bTAX\b.*\bGAP\b|\bGAP\b.*\bTAX\b", K)
[1] FALSE TRUE TRUE TRUE FALSE
目标: return 个元素 "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() 语句吗?
欢迎使用任何其他方法
如果您真的想使用对 grepl
的单个调用,那么我们可以尝试使用以下单个正则表达式模式:
\bTAX\b.*\bGAP\b|\bGAP\b.*\bTAX\b
此模式使用 交替 来检查可能出现 TAX
和 GAP
的两个顺序。另请注意,TAX
和 GAP
的每一侧都被单词边界标记 (\b
) 包围,以确保我们不会意外匹配,例如TAX
当它恰好出现在像 TAXES
.
grepl("\bTAX\b.*\bGAP\b|\bGAP\b.*\bTAX\b", K)
[1] FALSE TRUE TRUE TRUE FALSE