为什么stringr :: str_replace()将字符串中的每个字符都匹配为“。”?

时间:2019-03-27 16:43:09

标签: r

library(stringr)
y4=c("yes i do")
str_replace_all(y4,".","_")
[1] "________"

str_replace_all(y4," ","_")
[1] "yes_i_do"

y4=c("yes i do.")
str_replace_all(y4," ","_")
[1] "yes_i_do."

如果您尝试替换“。”在字符串中,每个字符都会被替换。

1 个答案:

答案 0 :(得分:1)

stringr默认使用正则表达式(regex),这是一个功能强大的搜索工具。 .是除换行符以外的任何字符的正则表达式通配符。如果您要使用文字.,则必须在正则表达式中使用\.这样的反斜杠对其进行转义,但是当R解释字符串时,我们需要另一个反斜杠来对第一个反斜杠进行转义,因此您可以使用{{1} }

Obligatory xkcd

例如:

\\.

或者,如果您想使用不带正则表达式语法的library(stringr) y4 <- c("yes i do.") #added a period so we can see the replacement. str_replace_all(y4,"\\.","_") [1] "yes i do_" 表达式,则可以使用:

fixed