首页 > 解决方案 > 查找模式并在括号之间换行下一个字母

问题描述

我必须在数据框列中找到不同的模式,一旦找到,下一个字母应该用括号括起来:

数据:

a <- c('(acetyl)RKJOEQLKQ', 'LDFEION(acetyl)EFNEOW')

如果模式是:'(acetyl)' 这是我想要实现的输出:

预期输出:

b <- c('(R)KJOEQLKQ', 'LDFEION(E)FNEOW')

我知道如何使用 gsub 找到模式:

b <- gsub('(acetyl)', replacement = '', a)

但是,我不确定在找到模式后如何处理下一个字母的括号之间的换行。

任何帮助,将不胜感激。

标签: rregexgsub

解决方案


您可以使用

a <- c('(acetyl)RKJOEQLKQ', 'LDFEION(acetyl)EFNEOW')
gsub('\\(acetyl\\)(.)', '(\\1)', a)
## => [1] "(R)KJOEQLKQ"     "LDFEION(E)FNEOW"

请参阅正则表达式演示在线 R 演示

详情

  • \(acetyl\)- 匹配文字字符串(acetyl)
  • (.)- 将任何单个字符捕获到第 1 组

(\1)替换模式用 + Group 1 value + 替换匹配()


推荐阅读