显然escapeRegex
在 Hmisc 包中调用了一个函数。函数本身对“字符串”的输入值具有以下定义:
gsub("([.|()\\^{}+$*?]|\\[|\\])", "\\\\\\1", string)
我之前的回答:
我不确定是否有内置功能,但您可以制作一个来做您想做的事。这基本上只是创建了一个包含要替换的值的向量和一个包含要替换它们的向量,然后循环遍历那些进行必要替换的值。
re.escape <- function(strings){
vals <- c("\\\\", "\\[", "\\]", "\\(", "\\)",
"\\{", "\\}", "\\^", "\\$","\\*",
"\\+", "\\?", "\\.", "\\|")
replace.vals <- paste0("\\\\", vals)
for(i in seq_along(vals)){
strings <- gsub(vals[i], replace.vals[i], strings)
}
strings
}
一些输出
> test.strings <- c("What the $^&(){}.*|?", "foo[bar]")
> re.escape(test.strings)
[1] "What the \\$\\^&\\(\\)\\{\\}\\.\\*\\|\\?"
[2] "foo\\[bar\\]"