如何匹配R中的字符串和空格
Posted
技术标签:
【中文标题】如何匹配R中的字符串和空格【英文标题】:How to match a string and white space in R 【发布时间】:2016-11-18 10:48:42 【问题描述】:我有一个数据框,其列的值如下:
“平均 18.24”“错误 23.34”。我的目标是替换这些文本和后续空格。在 R 中。任何机构都可以帮助我使用正则表达式模式来做到这一点吗?
我可以使用 [A-Z] 成功地做到这一点。但我无法结合空白。 [A-Z][[:space:]] 不走运。 感谢您的帮助。
【问题讨论】:
如您所见,您失败了,因为[A-Z]
不匹配小写字母,并且[A-Z]
没有+
或*
匹配1 个符号。后跟+
匹配1个或多个字母,*
匹配0个或多个。
感谢您的帮助。我对正则表达式的了解很原始。
很高兴my solution 提供帮助,请考虑接受。
【参考方案1】:
我们可以使用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")
【讨论】:
爱word()
sol ... :)
感谢您的解释。它帮助我解决了我的错误【参考方案2】:
您可以使用量词并将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 个或多个空格)
【讨论】:
以上是关于如何匹配R中的字符串和空格的主要内容,如果未能解决你的问题,请参考以下文章