R - 使用正则表达式从字符串中提取数字

R - Extracting number from string with regular expression

如果可能的话,我想用一个表达式从字符串中提取带小数的数字。

例如将“2,123.02”转换为“2123.02”——我目前的解决方案是:

paste(unlist(str_extract_all("2,123.02","\(?[0-9.]+\)?",simplify=F)),collapse="")

但我正在寻找的是 str_extract_all 中的表达式,将其作为矢量单独绑定在一起。这可以用正则表达式实现吗?

您可以尝试用空字符串替换逗号:

gsub(",", "", "2,123.02")
#[1] "2123.02"

注意:如果您只需要替换数字之间的逗号,您可以使用环视:

gsub("(?<=[0-9]),(?=[0-9])", "", "this, this is my number 2,123.02", perl=TRUE)
#[1] "this, this is my number 2123.02"

我使用 sub 而不是 gsub 进行编辑,以防万一您的字符串中包含多个带逗号的数字。如果你只有一个,sub 就是 "sufficient"。

NB2:您可以对 gsub 的结果调用 str_extrac_all,例如:

str_extract_all(gsub("(?<=[0-9]),(?=[0-9])", "","first number: 2,123.02, second number: 3,456", perl=T), "\d+\.*\d*", simplify=F)
#[[1]]
#[1] "2123.02" "3456"   

另一个选项是 tidyr 包中的 extract_numeric

library(tidyr)
extract_numeric("2,123.02")

[1] 2123.02