正则表达式匹配R中的数字

时间:2013-11-27 04:51:01

标签: r

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

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

2 个答案:

答案 0 :(得分:1)

如果你想获得“01.mp3”,因为它由两位数字和“.mp3”组成,那么你可以这样做:

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

答案 1 :(得分:0)

认为这里发生的事情(有人可能会纠正我),是你实际上并不匹配你的想法。您需要将括号列表[: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"

然后你匹配班级数字。