在R脚本中,我需要创建一个包含可能包含特殊字符的字符串的RegEx。所以,我应该首先逃避这些字符串,然后在RegEx对象中使用它们。
pattern <- regex(paste('\\W', str, '\\W', sep = ''));
在此示例中,应修复str
。所以,我需要一个返回其输入的转义形式的函数。例如'c++'
- &gt; 'c\\+\\+'
答案 0 :(得分:1)
我认为你必须只转义12个字符,所以包含那些的条件正则表达式应该可以解决问题 - 例如:
> gsub('(\\\\^|\\$|\\.|\\||\\?|\\*|\\+|\\(|\\)|\\[|\\{)', '\\\\\\1', 'C++')
[1] "C\\+\\+"
如果你不喜欢上面那些过多的手动反斜杠,你可以从特殊字符列表中构建那个正则表达式 - 例如:
> paste0('(', paste0('\\', strsplit('\\^$.|?*+()[{', '')[[1]], collapse = '|'), ')')
[1] "(\\\\|\\^|\\$|\\.|\\||\\?|\\*|\\+|\\(|\\)|\\[|\\{)"