如何用R中的反斜杠替换符号?

时间:2015-01-07 11:17:22

标签: regex r

你能帮我用R中的反斜杠替换char吗?我的试用版:

gsub("D","\\","1D2")

提前致谢

3 个答案:

答案 0 :(得分:5)

从键盘输入反斜杠时,请务必将其转义:

gsub("D","\\\\","1D2")
#[1] "1\\2"

,或者

gsub("D","\\","1D2", fixed=TRUE)
#[1] "1\\2"

,或者

library(stringr)
str_replace("1D2","D","\\\\")
#[1] "1\\2"

注意:如果你想要"1\2"之类的东西作为输出,恐怕你不能在R中做到这一点(至少在我的知识中)。您可以在路径名中使用正斜杠来避免这种情况。

有关详细信息,请参阅R帮助中提出的此问题:How to replace double backslash with single backslash in R

答案 1 :(得分:5)

你需要重新转义反斜杠,因为它需要作为普通R字符串的一部分进行转义(因此'\\'而不是'\'),而另外 gsub在替换模式中处理的方式不同,因此需要再次进行转义。以下作品:

gsub('D', '\\\\', '1D2')
# "1\\2"

结果看起来与所需输出不同的原因是R实际上不打印结果,它打印一个可解释的R字符串(注意周围的引号!)。但是,如果您使用catmessage,则会正确打印:

cat(gsub('D', '\\\\', '1D2'), '\n')
# 1\2

答案 2 :(得分:0)

gsub("\\p{S}", "\\\\", text, perl=TRUE);

\ p {S} ...匹配Unicode类别符号中的字符。