【问题标题】:Find pattern and wrap between parenthesis the next letter查找模式并在括号之间换行下一个字母
【发布时间】:2021-11-24 16:40:50
【问题描述】:

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

数据:

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

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

预期输出:

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

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

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

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

任何帮助将不胜感激。

【问题讨论】:

    标签: r regex gsub


    【解决方案1】:

    你可以使用

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

    请参阅 regex demoonline R demo

    详情

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

    (\1) 替换模式将匹配项替换为 ( + 组 1 值 + )

    【讨论】:

    • 仅供参考:如果您确实需要匹配(acetyl) 之后的字母,请将(.) 替换为([[:alpha:]]),尽管您的输入字符串看起来好像都只能在搜索的字符串后面包含一个字母。
    • 非常感谢,Wiktor '(\\1)' 完美运行。很快我就该学习一些正则表达式了:P
    猜你喜欢
    • 2013-08-05
    • 2020-05-04
    • 2013-10-23
    • 2015-09-11
    • 1970-01-01
    • 1970-01-01
    • 2017-04-23
    • 2022-12-23
    • 1970-01-01
    相关资源
    最近更新 更多