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

FAC*_*FAC 18 r

我正在尝试使用以下代码仅替换一个两个点:

test<-"test..1"
gsub("\\..", ".", test, fixed=TRUE)
Run Code Online (Sandbox Code Playgroud)

得到:

[1] "test..1"
Run Code Online (Sandbox Code Playgroud)

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

flo*_*del 33

如果要使用fixed = TRUE,请使用(非解释)字符.:

> gsub("..", ".", test, fixed = TRUE)
Run Code Online (Sandbox Code Playgroud)

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

> gsub("\\.\\.", ".", test)
> gsub("\\.{2}", ".", test)
Run Code Online (Sandbox Code Playgroud)

  • 我喜欢使用角色类而不是逃避.`gsub("[.] {2}",".",test)` (11认同)