【问题标题】:regular expression to match digit in R [duplicate]正则表达式匹配R中的数字[重复]
【发布时间】:2013-11-27 04:51:01
【问题描述】:
> x<-c("01.mp3","invite.mp3")
> x[grep(x,pattern="[:digit:]")]
[1] "invite.mp3"

在正则表达式中,为什么我不能得到“01.mp3”?

【问题讨论】:

  • 请参阅this SO question 进行讨论并链接到它为什么不起作用的解释。可行的是x[grep(x,pattern="[[:digit:]]")]x[grep(x,pattern="[0-9]")]

标签: r


【解决方案1】:

如果您想获得“01.mp3”,因为它由两位数字和“.mp3”组成,那么您可以执行以下操作:

x<-c("01.mp3","invite.mp3")
x[grep(x,pattern="[0-9]{2}.mp3")]

【讨论】:

    【解决方案2】:

    认为这里发生的事情(可能有人会纠正我),是你实际上并不符合你的想法。您需要将括号列表[:digit:] 放在括号内以匹配列表,否则您将匹配:digit: 中的文字字符。您可以通过向x 添加第三个元素来看到这一点:

    x<-c("01.mp3","invite.mp3", ":")
    x[grep(pattern="[:digit:]", x = x)]
    #[1] "invite.mp3" ":"  
    

    所以[:digit] 也将匹配:。相反,你使用[[:

    x[grep(x,pattern="[[:digit:]]")]
    #[1] "01.mp3"     "invite.mp3"
    

    然后你匹配班级数字。

    【讨论】:

      猜你喜欢
      • 2022-10-12
      • 2021-10-07
      • 2016-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-24
      • 1970-01-01
      • 2016-10-24
      相关资源
      最近更新 更多