我正在寻找一种方法来替换以下每个字符中的所有_
(例如''
}
x <- c('test_(match)','test_xMatchToo','test_a','test_b')
当且仅当_
后跟(
或x
时。所以想要的输出是:
x <- c('test(match)','testxMatchToo','test_a','test_b')
如何做到这一点(使用任何包装都可以)?
答案 0 :(得分:5)
使用lookahead:
_(?=[(x])
前瞻做的是断言模式匹配,但实际上并不匹配它正在展望的模式。所以,在这里,最终匹配文本只包含下划线,但是前瞻声明后面跟着x
或(
。
你的R代码看起来有点像这样(为清晰起见,每行一个arg):
gsub(
"_(?=[(x])", # The regex
"", # Replacement text
c("your_string", "your_(other)_string"), # Vector of strings
perl=TRUE # Make sure to use PCRE
)