如果字符串包含在模式中,如何替换部分字符串

时间:2016-11-15 17:55:42

标签: r regex stringr

我正在寻找一种方法来替换以下每个字符中的所有_(例如''}

x <- c('test_(match)','test_xMatchToo','test_a','test_b') 

当且仅当_后跟(x时。所以想要的输出是:

x <- c('test(match)','testxMatchToo','test_a','test_b') 

如何做到这一点(使用任何包装都可以)?

1 个答案:

答案 0 :(得分:5)

使用lookahead

_(?=[(x])

前瞻做的是断言模式匹配,但实际上并不匹配它正在展望的模式。所以,在这里,最终匹配文本只包含下划线,但是前瞻声明后面跟着x(

Demo on Regex101

你的R代码看起来有点像这样(为清晰起见,每行一个arg):

gsub(
    "_(?=[(x])",                            # The regex
    "",                                     # Replacement text
    c("your_string", "your_(other)_string"), # Vector of strings
    perl=TRUE                               # Make sure to use PCRE
)