将任何不是数字的内容转换为空白

时间:2012-12-22 22:49:51

标签: regex r

我有一个数据向量,下面是一个类似的版本:

x <- c("1234123xcv?","12341534xxx.","hello","goodbye")

我想做的是让它返回以下内容:

"1234123" "12341534" "" ""

我知道我可以做这样的事情,我手动指定每个大写/小写字母和我知道的几个特殊字符:

grep("[A-Za-z\\?\\.]",x,value=TRUE)

但我不知道该领域的“其他”是什么,不一定是数字。 (并且无法手动查看,因为它太大了)

考虑到这一点,我的问题是:有没有办法指定你只想在gsub()中返回数字?

6 个答案:

答案 0 :(得分:11)

gsub("\\D","",x) # yada yada yada

答案 1 :(得分:5)

在括号内,^表示不是。所以,这表示用“”替换任何不是数字的

> gsub("[^0-9]", "", x)
[1] "1234123"  "12341534" ""         "" 

答案 2 :(得分:4)

gsub("[^[:digit:]]", "", x) #......

答案 3 :(得分:3)

你需要这样的东西:

[^0-9]*

这将匹配任何不是数字的东西,不需要指定哪个字符。

答案 4 :(得分:2)

我会说

gsub("[^0-9]+", "", x)

[^ 0-9]将一次只替换一个字符,[^ 0-9] +一个或多个会更快。

答案 5 :(得分:0)

您可以使用[\ d]。只返回数字。