【问题标题】:Use grep to find letter without separate使用 grep 查找不带分隔符的字母
【发布时间】:2016-07-13 18:10:53
【问题描述】:

我有这些代码:

x=c('a','a,b','a-c','ab')
y=c('a')
grep(y,x,ignore.case = T)

结果是

> grep(y,x)
[1] 1 2 3 4

但我希望结果应该是“1 2 3”,一旦“a”被任何东西或只是“a”分隔,除了“a”不像“ab”那样分隔。 谢谢!

【问题讨论】:

  • 分隔符与它无关。你告诉grep() 只查找字符“a”,它会在每个字符串中找到它。

标签: r grepl


【解决方案1】:

y添加单词边界:

x=c('a','a,b','a-c','ab')
y=c('a\\b')
grep(y,x,ignore.case = T)
# [1] 1 2 3

【讨论】:

    【解决方案2】:

    由于 OP 希望有一个模式,即在 'a' ([^a-z]) 或 (|) 之后没有任何字母,它可以是字符串 $ 的结尾。

    grep("a([^a-z]|$)", x) 
    #[1] 1 2 3
    

    或者,如果我们想明确标点符号 ([[:punct:]]) 跟在 'a' 之后,或者 (|) 是字符串的结尾,那么

    grep("a([[:punct:]]|$)", x)
    #[1] 1 2 3
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-17
      • 1970-01-01
      • 2015-10-13
      • 1970-01-01
      • 1970-01-01
      • 2013-08-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多