grepl содержит мульти шаблон хотя бы один раз в R - PullRequest
0 голосов
/ 21 сентября 2018

TARGET: вернуть элементы с "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 голосов
/ 21 сентября 2018

Если вы действительно хотите использовать один вызов 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
...