r - gsub 只是模式的一部分

标签 r string gsub

我想使用 gsub 来更正我数据中的一些名称。我想要诸如“R.J.”之类的名字和“A.J.”字母之间没有空格。

例如:

x <- "A. J. Burnett"

我想用gsub来匹配他名字的模式,然后去掉空格:
gsub("[A-Z]\\.\\s[A-Z]\\.", "[A-Z]\\.[A-Z]\\.", x)

但我得到:
[1] "[A-Z].[A-Z]. Burnett"

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

最佳答案

通过在 (...) 中包含模式来使用捕获组,并使用 \\1 引用捕获的模式, \\2 , 等等。在这个例子中:

x <- "A. J. Burnett"
gsub("([A-Z])\\.\\s([A-Z])\\.", "\\1.\\2.", x)
[1] "A.J. Burnett"

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

关于r - gsub 只是模式的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37425019/

相关文章:

c - 如何遍历char指针来计算特定字符存在的类型数

c - 在 C 中处理字符串

r - 根据在列上找到的索引从数据框行中获取变量

r - 在 R Datatable Shiny 应用程序中单击按钮时,模态仅打开一次

string - 识别字符向量中具有重复字母的项目

ruby - 使用 select 而不是 gsub 来避免在 Ruby 中进行多个正则表达式评估

logstash - 访问 logstash 中的数组元素

regex - gsub - 将所有重复字符减少到一个实例

r - 安装 RMySQL 时出错

r - 如何在树状图的 y 轴上输出相似度百分比?