R:正则表达式grep所有第一次出现的百分比([0-9] *%)

时间:2015-08-07 13:23:16

标签: regex r string

string <- c("50% something", "something100% more", "Both6% and also60%")

我无法想象如何在'%'之前获得第一次出现的数字。请注意,string中可能会出现各种字符。我上面string的结果是:

[1]  50 100   6

2 个答案:

答案 0 :(得分:3)

您可以使用str_extract中的stringr来提取%之前的第一组数字。在这里,我使用了周围(?=%)来匹配数字,然后是%

library(stringr)
as.numeric(str_extract(string, '\\d+(?=%)'))
#[1]  50 100   6

对于第二种情况

 string1 <- c(string, "50people but 20%")
 as.numeric(str_extract(string1, '\\d+(?=%)'))
 #[1]  50 100   6  20

答案 1 :(得分:3)

使用sub,

> string <- c("50% something", "something100% more", "Both6% and also60%")
> sub("^.*?(\\d+)%.*", "\\1", string)
[1] "50"  "100" "6"  
> as.numeric(sub("^.*?(\\d+)%.*", "\\1", string))
[1]  50 100   6