R中的RegEx转义函数

时间:2015-12-11 23:28:45

标签: regex r escaping

在R脚本中,我需要创建一个包含可能包含特殊字符的字符串的RegEx。所以,我应该首先逃避这些字符串,然后在RegEx对象中使用它们。

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

在此示例中,应修复str。所以,我需要一个返回其输入的转义形式的函数。例如'c++' - &gt; 'c\\+\\+'

1 个答案:

答案 0 :(得分:1)

我认为你必须只转义12个字符,所以包含那些的条件正则表达式应该可以解决问题 - 例如:

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

如果你不喜欢上面那些过多的手动反斜杠,你可以从特殊字符列表中构建那个正则表达式 - 例如:

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