どうやら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\\]"