从字符串中提取数字,包括小数和科学记数法

时间:2015-04-13 17:02:27

标签: regex r

我有一些看起来像

的字符串
x<-"p = 9.636e-05"

我想使用gsub提取数字。到目前为止我已经

gsub("[[:alpha:]](?!-)|=|\\^2", "", x)

但这会从科学记数中删除'e',给我

"  9.636-05"

使用as.numeric无法将其转换为数字。我知道可以使用前瞻来匹配“ - ”,但我不确切知道如何去做。

4 个答案:

答案 0 :(得分:4)

你可以尝试

 sub('.* = ', '', x)
 #[1] "9.636e-05"

答案 1 :(得分:3)

您可以使用以下内容初步删除字符串开头的所有非数字字符:

sub('^\\D+', '', x)

答案 2 :(得分:1)

尝试

format(as.numeric(gsub("[^0-9e.-]", "", x)), scientific = FALSE)
# [1] "0.00009636"

答案 3 :(得分:1)

通过sub或regmatches功能。

> x<-"p = 9.636e-05"
> sub(".* ", "", x)
[1] "9.636e-05"
> regmatches(x, regexpr("\\S+$", x))
[1] "9.636e-05"
> library(stringi)
> stri_extract(x, regex="\\S+$")
[1] "9.636e-05"