GSUB功能r中删除斜杠
假设我有一个具有以下特点GSUB功能r中删除斜杠
"\"------------080209060700030309080805\""
现在我想用GSUB功能r中删除“\和\”部分的字符串,只有请保留以下字符:
"------------080209060700030309080805\"
任何人都可以帮助我弄清楚该如何正确使用它?
string <- "\\------------080209060700030309080805\\"
string <- gsub("^\\\\(.*)\\\\$", "\\1", string)
注:我使用的模式是^\(.*)\$
,这将在开始和结束反斜杠之间匹配的一切。这只会匹配字符串,因此它们都以反斜杠开始和结束。此外,我们使用四个反斜杠(\\\\
)来表示gsub()
中的模式的文字反斜杠。我们需要逃避两次,一次是R,另一次是正则表达式引擎。
编辑1:固定的臭虫(创建一个字符串反斜杠需要两个反斜杠):
s <- '\\"------------080209060700030309080805\\"'
s
gsub('\\"', "", s, fixed = TRUE)
结果
> s <- '\\"------------080209060700030309080805\\"'
> s
[1] "\\\"------------080209060700030309080805\\\""
> gsub('\\"', "", s, fixed = TRUE)
[1] "------------080209060700030309080805"
请注意R单反斜线是转义码不是字符串的一部分:
> charToRaw('\\"')
[1] 5c 22
> charToRaw('\"')
[1] 22
因此,您必须在引用的字符串中使用两个反斜杠来在内部创建一个反斜杠。如果打印这个字符串反斜杠再次逃脱它看起来令人困惑:
> print('\\"')
[1] "\\\""
如果你要打印字符串的转义内容中使用的cat
代替print
:
> cat('\\"')
\"
对于较多见的帮助R:?"'"
:
字符常量
单引号和双引号分隔字符常量。它们可以互换使用 ,但首选双引号(而字符 常用双引号打印),因此单引号为 通常只用于分隔包含双引号的字符常量。
反斜杠用于在字符 常量内启动转义序列。转义不在下表中的字符是 错误。
单引号需要用单引号 字符串中的反斜杠和双引号字符串中的双引号进行转义。
\ n换行\ r回车\ t制表\ b退格\一个警报(钟形) \ f换\ v垂直制表\反斜杠\ \ 'ASCII撇号' \ “ASCII引号”`ASCII严重口音(反向)`\ nnn
给定八进制代码(1,2或3位数)的字符\ xnn字符 给定十六进制代码(1或2个十六进制数字)\ unnnn Unicode字符 给定代码(1--4十六进制数字)\ Unnnnnnnn Unicode字符给出 代码(1--8个十六进制数字)
' “------------ 080209060700030309080805 \”'作为结果看起来像一个错字:做ÿ你真的希望最终的反斜杠成为你结果的一部分吗?请编辑您的答案... –
请以纯文本向我们显示输入和输出应该是什么。不要担心在R中的转义 –
这里的输入看起来是这样的: “\”------------ 080209060700030309080805 \“”,这实际上是来自垃圾邮件/来自数据科学书籍的火腿数据。我想使用gsub函数只抓住“------------ 080209060700030309080805”“部分,这意味着我想摆脱这里的斜线,但目前看来我没有一个很好的方法来做到这一点。 – tql66