查找模式并在括号之间换行下一个字母
Find pattern and wrap between parenthesis the next letter
我必须在数据框列中找到不同的模式,一旦找到,下一个字母应该用括号括起来:
数据:
a <- c('(acetyl)RKJOEQLKQ', 'LDFEION(acetyl)EFNEOW')
如果模式是:'(acetyl)'
这是我想要实现的输出:
预期输出:
b <- c('(R)KJOEQLKQ', 'LDFEION(E)FNEOW')
我知道如何使用 gsub 找到模式:
b <- gsub('(acetyl)', replacement = '', a)
但是,我不确定如何在找到模式后处理下一个字母括号之间的换行。
如有任何帮助,我们将不胜感激。
你可以使用
a <- c('(acetyl)RKJOEQLKQ', 'LDFEION(acetyl)EFNEOW')
gsub('\(acetyl\)(.)', '(\1)', a)
## => [1] "(R)KJOEQLKQ" "LDFEION(E)FNEOW"
参见regex demo and the online R demo。
详情:
\(acetyl\)
- 匹配文字字符串 (acetyl)
(.)
- 将任何单个字符捕获到第 1 组中
()
替换模式用 (
+ 第 1 组值 + )
.
替换匹配项
我必须在数据框列中找到不同的模式,一旦找到,下一个字母应该用括号括起来:
数据:
a <- c('(acetyl)RKJOEQLKQ', 'LDFEION(acetyl)EFNEOW')
如果模式是:'(acetyl)'
这是我想要实现的输出:
预期输出:
b <- c('(R)KJOEQLKQ', 'LDFEION(E)FNEOW')
我知道如何使用 gsub 找到模式:
b <- gsub('(acetyl)', replacement = '', a)
但是,我不确定如何在找到模式后处理下一个字母括号之间的换行。
如有任何帮助,我们将不胜感激。
你可以使用
a <- c('(acetyl)RKJOEQLKQ', 'LDFEION(acetyl)EFNEOW')
gsub('\(acetyl\)(.)', '(\1)', a)
## => [1] "(R)KJOEQLKQ" "LDFEION(E)FNEOW"
参见regex demo and the online R demo。
详情:
\(acetyl\)
- 匹配文字字符串(acetyl)
(.)
- 将任何单个字符捕获到第 1 组中
()
替换模式用 (
+ 第 1 组值 + )
.