将字符串中的两个点用gsub替换

19
我正在尝试使用以下代码将两个点替换为一个点:
test<-"test..1"
gsub("\\..", ".", test, fixed=TRUE)

并获得:

[1] "test..1"

我尝试了几种转义字符串的组合,包括方括号[]但都没有成功。
我做错了什么?

1个回答

37

如果你要使用fixed = TRUE,请使用(未解释的)字符.

> gsub("..", ".", test, fixed = TRUE)

否则,在正则表达式中(fixed = FALSE),.有一个特殊含义(任何字符),因此您需要在其前面加上反斜杠以表示“点字符”:

> gsub("\\.\\.", ".", test)
> gsub("\\.{2}", ".", test)

12
我喜欢使用字符类而不是转义符。 gsub("[.]{2}", ".", test) - Matthew Lundberg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接