我想gsub
用2个反斜杠替换字符串中每个出现反斜杠的情况.
目前,我所尝试的是gsub("\\\\", "\\", x)
.这似乎不起作用.但是,如果我更改表达式而不是用"a"替换每个反斜杠,它可以正常工作.
> gsub("\\\\", "\\", "\\")
[1] ""
> gsub("\\\\", "a", "\\")
[1] "a"
> gsub("\\\\", "\\\\", "\\")
[1] "\\"
Run Code Online (Sandbox Code Playgroud)
最后一个字符只有一个反斜杠; R只打印2,因为它使用反斜杠打印转义字符.使用nchar
确认长度为1.
是什么导致这个功能?第二个参数gsub
不是正则表达式,因此在字符串文字中有4个反斜杠应该转换为带有2个反斜杠的字符.gsub
上面的第一个调用返回一个空字符串更没意义.
Jos*_*ien 30
这就是你需要的:
gsub("\\\\", "\\\\\\\\", "\\")
[1] "\\\\"
Run Code Online (Sandbox Code Playgroud)
您需要四个反斜杠来表示一个文字反斜杠的原因是,"\"
这两个R字符串中的转义字符以及您最终传递模式的正则表达式引擎.如果您直接与正则表达式引擎交谈,则"\\"
用于指示字面反斜杠.但是为了让R传递"\\"
给正则表达式引擎,你需要输入"\\\\"
.
(如果你只是想要反斜杠,你可能想要使用它):
gsub("\\", "\\\\", "\\", fixed=TRUE)
[1] "\\\\"
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
18279 次 |
最近记录: |