使用正则表达式无法完全匹配一个出现

时间:2015-10-10 13:10:41

标签: r

如何恰好匹配一次支撑内容?

grep(x=c(1223,12,1), pattern="{0-9}{3}", value=T)

的产率:

"1223" "12"   "1"

为什么我不能仅得到最后一部分:

grep(x=c(1223,12,1), pattern="{0-9}{1}", value=T)

相反,我得到了同样的结果:

"1223" "12"   "1"  

如果长度不止一个怎么办,让我们说我需要:

> grep(value=T,x=c('A1B','A12B'),"[0-9]{1}")

只给我x的第一部分(得到单词中只有一个数字)?

1 个答案:

答案 0 :(得分:4)

要进行精确匹配,您需要使用锚点。而且它必须是[0-9]而不是{0-9},请注意使用的括号。

grep(x=c(1223,12,1),pattern="^[0-9]{1}$",value=T)
# [1] "1"
grep(x=c(1223,12,1),pattern="[0-9]{3}",value=T)
# [1] "1223"
grep(x=c(1223,12,1),pattern="^[0-9]{3}$",value=T)
#character(0)

最后一个没有返回任何内容,因为没有一个完全包含三位数的数字。