【问题标题】:How to replace backslash \ in R with gsub?如何用gsub替换R中的反斜杠\?
【发布时间】:2017-11-05 16:32:52
【问题描述】:

我想从 R 中修改一些 .tex 文件。 我使用 readLines() 读取了文件,但无法替换以下文本。

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

好像找不到$\\times$ 但即使是这样,是否可以写 \ 而不转义它们?

提前谢谢你!

【问题讨论】:

  • gsub默认使用正则表达式,除非你设置fixed=TRUE,$表示reg.exp中的句尾。所以,使用new_tex &lt;- gsub("$\\times$", "\\ $\\times$", tex,fixed=TRUE)。不,你不能在不转义的情况下编写反斜杠,否则例如无法区分 \t (反斜杠 + t) 和制表符?
  • 谢谢,如果您将其作为答案发布,我会将其设置为正确

标签: r gsub


【解决方案1】:

gsub 默认使用正则表达式,除非您设置了fixed=TRUE。 在正则表达式中$ 表示句子的结尾,这就是它不起作用的原因。

这应该可以工作:

new_tex &lt;- gsub("$\\times$", "\\ $\\times$", tex,fixed=TRUE)

关于反斜杠,不,你不能不转义就写反斜杠。否则,例如,R 解释器将无法区分制表符 \t 和“反斜杠 + t”。

【讨论】:

    【解决方案2】:

    没有fixed = TRUE

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

    不幸的是,您需要很多反斜杠,因为您需要转义几乎所有内容。

    【讨论】:

      猜你喜欢
      • 2015-02-14
      • 2021-08-19
      • 2020-01-17
      • 1970-01-01
      • 1970-01-01
      • 2014-09-09
      • 2011-09-06
      • 1970-01-01
      • 2017-07-25
      相关资源
      最近更新 更多