正则表达式从 R 中的字符串中删除所有非数字符号

标签 r regex string

如何从具有 xxxx.x 或 xxxx.x-x 结构的字符串中提取数字并将它们组合为数字?例如

list <- c("1010.1-1", "1010.2-1", "1010.3-1", "1030-1", "1040-1",
          "1060.1-1", "1060.2-1", "1070-1", "1100.1-1", "1100.2-1")

所需的(数字)输出将是:

101011, 101021, 101031...

我试过了

regexp <- "([[:digit:]]+)"
solution <- str_extract(list, regexp)

然而,这只会提取第一组数字;并使用类似的东西

regexp <- "([[:digit:]]+\\.[[:digit:]]+\\-[[:digit:]]+)"

如果匹配则返回第一个结果(初始形式的数据),否则 NA 较短的字符串。想法?

最佳答案

删除所有非数字符号:

list <- c("1010.1-1", "1010.2-1", "1010.3-1", "1030-1", "1040-1", "1060.1-1", "1060.2-1", "1070-1", "1100.1-1", "1100.2-1")
as.numeric(gsub("\\D+", "", list))
## => [1] 101011 101021 101031  10301  10401 106011 106021  10701 110011 110021

参见 R demo online

关于正则表达式从 R 中的字符串中删除所有非数字符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44576480/

相关文章:

javascript - 如何确定路径末尾是否包含格式?

python - 如何在 python 中使用命名组和数据字典从正则表达式模式组成字符串?

python - 如何在python中找到两个字符串之间最长的公共(public)ENDING

r - CompactPDF 的 qpdf.exe?

r - source(..., chdir=TRUE) 似乎没有更改目录

r - 由连字符组成的数字序列,而不用连字符连接单个出现的数字

ios - IOS程序中的正则表达式问题

javascript - 字符串到 JavaScript 数组,元素作为数组

java - 获取特定字符串 JAVA 的二进制大小

r - 更改数字格式而不创建类数 chr