如何用gsub在R中替换反斜杠\?

3
我想在R中修改一些.tex文件。我使用readLines()读取文件,但是我无法替换以下文本。
tex <- "$\\times$"
new_tex <- gsub("$\\times$", "\\ $\\times$", tex)
new_tex

看起来它找不到$\\times$。但是即使找到了,是否有可能不需要转义就能写出\?

提前致谢!


2
gsub默认使用正则表达式,除非您设置fixed=TRUE,并且$表示reg.exp中的句子结尾。因此,请使用new_tex <- gsub("$\\times$", "\\ $\\times$", tex,fixed=TRUE)。不,您不能在不转义的情况下编写反斜杠,否则例如无法区分\t(反斜杠+t)和制表符? - digEmAll
谢谢,如果您将其发布为答案,我将设置为正确答案。 - Pulse
2个回答

4

gsub 默认使用正则表达式,除非你设置了 fixed=TRUE

在正则表达式中,$ 表示句子结尾,所以它不能正常工作。

这个应该可以正常工作:

new_tex <- gsub("$\\times$", "\\ $\\times$", tex,fixed=TRUE)

关于反斜杠,请注意,你必须对反斜杠进行转义才能输出。否则,例如,R 解释器无法区分制表符 \t 和 “反斜杠+ t”。


0

没有 fixed = TRUE

gsub("\\$\\\\times\\$", "\\\\ $\\\\times\\$", tex)
[1] "\\ $\\times$"

不幸的是,你需要很多反斜杠,因为你需要转义几乎所有东西。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接