r - R 中的 gsub() 不会替换 '.'(点)

标签 r regex gsub stringr

我想将 "2014.06.09" 中的点替换为 "2014-06-09"。我正在使用 gsub() 函数。如果

x <-  "2014.06.09"
gsub('2', '-' ,x)
# [1] "-014.06.09"

但是当我尝试

gsub('.', '-', x)
# [1] "----------"

而不是“2014-06-09”

class(x)
# "character"

有人可以建议我一种正确的方法以及为什么它不适用于 '.' (点)

最佳答案

您可能需要转义 .,这是一个特殊字符,表示“任何字符”(来自 @Mr Flick 的评论)

 gsub('\\.', '-', x)
 #[1] "2014-06-09"

或者

gsub('[.]', '-', x)
#[1] "2014-06-09"

或者正如 @Moix 在评论中提到的,我们也可以使用 fixed=TRUE 而不是转义字符。

 gsub(".", "-", x, fixed = TRUE)

关于r - R 中的 gsub() 不会替换 '.'(点),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31518150/

相关文章:

javascript - 正则表达式允许使用不敏感的字母、数字和特殊字符,例如逗号、点、破折号和连字符

ruby - 获取名字并删除字符串中的其余部分

r - 如何检查两行是否具有 R 中数据帧的相等值 pr id

r - %.% (dplyr) 和 %>% (magrittr) 之间的差异

r - 在 R 中生成移动和变量

正则表达式仅匹配包含序列的任何单词一次

r - 更改 R 中的内部因子水平(对于避风港很重要 - write_dta())

python - 在python中提取java主类名

r - 如何从R中的字符串中删除+(加号)?

r - 当我不使用gsub函数时,R中的recode函数出现奇怪的gsub错误