如何匹配R中的字符串和空格

时间:2016-07-15 09:24:29

标签: regex r data-cleaning

我的数据框的列值如下:

"平均18.24" "错误23.34"。我的目标是替换文本和空格。在R.任何身体可以用正则表达式帮助我做这个吗?

我能够使用[A-Z]成功完成此操作。但我无法结合白色空间。 [A-Z] [[:空间:]]没有运气。 非常感谢您的帮助。

2 个答案:

答案 0 :(得分:5)

您可以使用量词并将a-z添加到模式(以及^锚点)

您可以使用

"^\\S+\\s+"
"^[a-zA-Z]+[[:space:]]+"

请参阅regex demo

R demo

> b <- c("Average 18.24", "Error 23.34")
> sub("^[A-Za-z]+[[:space:]]+", "", b)
> ## or sub("^\\S+\\s+", "", b)
[1] "18.24" "23.34"

<强>详情:

  • ^ - 字符串开头
  • [A-Za-z]+ - 一个或多个字母(替换为\\S+以匹配1个或多个非空格)
  • [[:space:]]+ - 1个以上的空格(或\\s+将匹配1个或更多空格)

答案 1 :(得分:5)

我们可以使用sub。使用模式\\D+匹配所有非数字字符,然后在替换中使用''删除它们。

sub("\\D+", '', v2)
#[1] "18.24" "23.34"

或者匹配一个或多个单词字符,后跟一个或多个空格,并替换为''

 sub("\\w+\\s+", "", v2)
 #[1] "18.24" "23.34"

或者如果我们使用stringr

library(stringr)
word(v2, 2)
#[1] "18.24" "23.34"

数据

v2 <- c("Average 18.24" ,"Error 23.34")