【问题标题】:How can I remove non-numeric characters from strings using gsub in R?如何在 R 中使用 gsub 从字符串中删除非数字字符?
【发布时间】:2019-03-14 08:08:42
【问题描述】:

我使用 R 中的 gsub 函数来删除数字中不需要的字符。所以我应该从字符串中删除每个不是数字的字符.-。我的问题是正则表达式没有删除一些非数字字符,如d+<

以下是我的正则表达式、gsub 执行及其输出。如何更改正则表达式以获得所需的输出?

当前输出:

gsub(pattern = '[^(-?(\\d*\\.)?\\d+)]', replacement = '', x = c('1.2<', '>4.5', '3+.2', '-1d0', '2aadddab2','1.3h'))
[1] "1.2<"  ">4.5"  "3+.2"  "-1d0"  "2ddd2" "1.3"

期望的输出:

[1] "1.2"  "4.5"  "3.2"  "-10"  "22" "1.3"

谢谢。

【问题讨论】:

  • 使用gsub("-", "+", x, fixed=TRUE)
  • 只要去掉?使用gsub(pattern = '-', replace='+', x = c('a', 'bc', '-'))
  • 如果您将[] 包裹在您想要查找的内容周围,它会起作用:gsub(pattern = '[-?]', replace='+', x = c('a', 'bc', '-'))
  • 不是一个有用的评论@StanislausStadlmann。应该是gsub(pattern = '[-]', replace='+', x = c('a', 'bc', '-'))。他不打算匹配可能的? 字符。
  • gsub("[^0-9.-]", "", x)

标签: r regex gsub


【解决方案1】:

简单使用

gsub("[^0-9.-]", "", x)

如果有多个-.,您可以使用第二个正则表达式来处理它。 如果您对此感到困惑,请提出一个新问题。


(如果需要,请确保将. 更改为,

【讨论】:

  • 如果你有多个替换实例,可以使用dplyrstr_replace_all
  • 这实际上可以通过stringr 包获得。
猜你喜欢
  • 2021-01-28
  • 1970-01-01
  • 1970-01-01
  • 2022-06-17
  • 2019-01-01
  • 1970-01-01
  • 2013-06-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多