gsub只是模式的一部分

Col*_*lin 11 string r gsub

我想使用gsub来更正我的数据中的一些名称.我希望诸如"RJ"和"AJ"之类的名字在字母之间没有空格.

例如:

x <- "A. J. Burnett"
Run Code Online (Sandbox Code Playgroud)

我想使用gsub匹配他的名字的模式,然后删除空格:

gsub("[A-Z]\\.\\s[A-Z]\\.", "[A-Z]\\.[A-Z]\\.", x)
Run Code Online (Sandbox Code Playgroud)

但我得到:

[1] "[A-Z].[A-Z]. Burnett"
Run Code Online (Sandbox Code Playgroud)

显然,不是[AZ],而是我想要原始名称中的实际字母.我怎样才能做到这一点?

Sto*_*ica 14

在封闭的图案使用捕捉组(...),并参照摄像图案用\\1,\\2等.在这个例子中:

x <- "A. J. Burnett"
gsub("([A-Z])\\.\\s([A-Z])\\.", "\\1.\\2.", x)
[1] "A.J. Burnett"
Run Code Online (Sandbox Code Playgroud)

另请注意,在替换中您不需要转义.字符,因为它们没有特殊含义.