如何用“\&”替换“&”

How to replace "&" with "\&"

我发现很难用 "\&" 替换 "&" 使用 R 的 base gsub() 函数 -

gsub("&", "\&", "A&B")

给出以下错误-

Error: '\&' is an unrecognized escape in character string starting ""\&"

有什么办法可以实现这种替换吗?

您可以使用

gsub("&", "\&", "A&B",fixed=TRUE) # Fixed string replacement
gsub("(&)", "\\\1", "A&B")      # Regex replacement

固定字符串替换很清楚:每个&被替换为一个\&。双 \ 用于字符串文字中以表示文字 \.

在正则表达式替换中,& 被匹配并捕获到组 1 中。由于反斜杠是正则表达式替换模式中的特殊字符,因此必须加倍,并且 - 请记住文字反斜杠在字符串文字中用 \ 定义 - 我们需要在替换中使用 \\</code> 是对第 1 组值的反向引用,但同样,<code>\ 必须在字符串中加倍,即文字,因此,我们在其中使用 \1。这就是连续有 6 个反斜杠的原因。您可能会找到有关反斜杠问题的更多信息 .

结果只包含一个反斜杠,您可以使用 cat 或将内容保存到文本文件中轻松检查:

cat(gsub("&", "\&", "A&B",fixed=TRUE), collapse="\n")
cat(gsub("(&)", "\\\1", "A&B"))

R demo online