【问题标题】:Insert backslashes with gsub [duplicate]使用 gsub 插入反斜杠 [重复]
【发布时间】:2017-01-03 15:10:56
【问题描述】:

我想用 knitr 输出我的 R 分析,并且我有一个包含一行下划线的文本。我必须让他们逃脱,所以把每个_ 变成\_

但是因为反斜杠也是正则表达式中的特殊字符,所以我没有找到在每个下划线之前插入一个反斜杠的方法。似乎奇数的反斜杠会产生错误(我猜最后一个与下划线配对),但尝试用偶数转义也不起作用。

a <- "blah _ blah ___ blah"
> gsub("_", "\\_", a)
[1] "blah _ blah ___ blah"
> gsub("_", "\\\\_", a)
[1] "blah \\_ blah \\_\\_\\_ blah"
> gsub("_", "\\\_", a)
Error: '\_' is an unrecognized escape in character string starting ""\\\_"
> gsub("_", "\_", a)
Error: '\_' is an unrecognized escape in character string starting ""\_"

正确的方法是什么?它不必使用 gsub 和正则表达式,但我需要将转义轻松应用于单个字符串。

【问题讨论】:

  • 这个问题不是重复的。另一个问题的答案是使用两个反斜杠 - 你可以在我的文字中看到我尝试过但它不起作用。
  • 这些都是骗子,问题 - 替换为\ - 描述得很好。阿克伦多次回答。这里是my answer
  • @WiktorStribiżew 好的,抱歉,现在知道了。 “必须通过猫运行”部分确实让我感到困惑。

标签: r regex


【解决方案1】:

我们需要转义\

gsub("_", "\\\\_", a)

如果我们打印它,它只是一个\

cat(gsub("_", "\\\\_", a))
#blah \_ blah \_\_\_ blah

我们可以通过nchar找到它

nchar("\\")
#[1] 1

【讨论】:

    猜你喜欢
    • 2020-07-11
    • 1970-01-01
    • 1970-01-01
    • 2015-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多