R中的RegEx转义函数

RegEx escape function in R

在 R 脚本中,我需要创建一个包含可能具有特殊字符的字符串的正则表达式。所以,我应该先转义那些字符串,然后在 RegEx 对象中使用它们。

pattern <- regex(paste('\W', str, '\W', sep = ''));

在这个例子中,str 应该是固定的。所以,我需要一个 returns 转义其输入形式的函数。例如 'c++' -> 'c\+\+'

我认为您只需转义 12 个字符,因此包含这些字符的条件正则表达式应该可以解决问题——例如:

> gsub('(\\^|\$|\.|\||\?|\*|\+|\(|\)|\[|\{)', '\\\1', 'C++')
[1] "C\+\+"

或者,如果您不喜欢上面过多的手动反斜杠,您可以从特殊字符列表构建正则表达式,例如:

> paste0('(', paste0('\', strsplit('\^$.|?*+()[{', '')[[1]], collapse = '|'), ')')
[1] "(\\|\^|\$|\.|\||\?|\*|\+|\(|\)|\[|\{)"