我的数据框的列值如下:
"平均18.24" "错误23.34"。我的目标是替换文本和空格。在R.任何身体可以用正则表达式帮助我做这个吗?
我能够使用[A-Z]成功完成此操作。但我无法结合白色空间。 [A-Z] [[:空间:]]没有运气。 非常感谢您的帮助。
答案 0 :(得分:5)
您可以使用量词并将a-z
添加到模式(以及^
锚点)
您可以使用
"^\\S+\\s+"
"^[a-zA-Z]+[[:space:]]+"
请参阅regex 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")