正则表达式R中的大括号

时间:2019-03-29 03:27:55

标签: r regex escaping

我不是R中Regex的专家,但是我觉得我已经足够长时间阅读了文档,但仍然很短,所以我在这里发布。

我正尝试替换下面的字符串,全部以书面形式表示:

a = "\\begin{tabular}"
a = gsub("\\begin{tabular}", "\\scalebox{0.7}{
\\begin{tabular}", a)

所需的输出为:cat('\\scalebox{0.7}{ \\begin{tabular}')

所以我知道我需要将第一个“ \”转义为“ \”,但是当我转义括号时,我会得到

Error: '\}' is an unrecognized escape in character string starting...

1 个答案:

答案 0 :(得分:1)

在这种情况下,由于您要替换固定的字符串,因此可以简单地设置fixed = T选项来完全避免使用正则表达式。

a = "\\begin{tabular}"
a = gsub("\\begin{tabular}", "\\scalebox{0.7}{\n\\begin{tabular}", x=a, fixed= T)

并使用\n作为换行符。

如果您确实想使用正则表达式,则需要使用两个反斜杠而不是一个反斜杠来转义花括号。

例如

a = "\\begin{tabular}"

gsub(pattern = "\\{|\\}", replacement = "_foo_", x=a)

[1] "\\begin_foo_tabular_foo_"