【问题标题】:grepl contain multi pattern at least one time in Rgrepl 在 R 中至少包含一次多模式
【发布时间】:2019-02-25 10:03:22
【问题描述】:

目标: 至少一次返回带有“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() 语句吗?

欢迎使用其他方法

【问题讨论】:

    标签: r regex grepl


    【解决方案1】:

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

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

    此模式使用 alternation 来检查可能出现TAXGAP 的两个订单。另请注意,TAXGAP 在每一侧都被单词边界标记 (\b) 包围,以确保我们不会意外匹配,例如TAX 碰巧出现在像TAXES 这样的较大单词的子字符串中。

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

    【讨论】:

    • 感谢您的好方法。但我不得不承认我发布了一个不好的例子,这是一个英语情况,我的实际情况是处理像汉字这样的情况。 “名词”之前的“形容词”(
    猜你喜欢
    • 2014-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-11
    • 1970-01-01
    相关资源
    最近更新 更多