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
如果可能的话,我想用一个表达式从字符串中提取带小数的数字。
例如将“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