在r中使用gsub函数删除斜杠

0 regex r string-substitution gsub

假设我有一个包含以下字符的字符串

"\"------------080209060700030309080805\""
Run Code Online (Sandbox Code Playgroud)

现在我想使用r中的gsub函数删除“\和\”部分,只保留以下字符:

"------------080209060700030309080805\"
Run Code Online (Sandbox Code Playgroud)

谁能帮我弄清楚我应该如何正确地做到这一点?

R Y*_*oda 5

编辑 1:修复了错误(在字符串中创建反斜杠需要两个反斜杠):

s <- '\\"------------080209060700030309080805\\"'
s
gsub('\\"', "", s, fixed = TRUE)
Run Code Online (Sandbox Code Playgroud)

结果是

> s <- '\\"------------080209060700030309080805\\"'
> s
[1] "\\\"------------080209060700030309080805\\\""
> gsub('\\"', "", s, fixed = TRUE)
[1] "------------080209060700030309080805"
Run Code Online (Sandbox Code Playgroud)

请注意,R 中的单个反斜杠是转义码,它不是字符串的一部分:

> charToRaw('\\"')
[1] 5c 22
> charToRaw('\"')
[1] 22
Run Code Online (Sandbox Code Playgroud)

因此,您必须在带引号的字符串中使用两个反斜杠来在内部创建一个反斜杠。如果你打印这个字符串,反斜杠会再次被转义,这看起来很混乱:

> print('\\"')
[1] "\\\""
Run Code Online (Sandbox Code Playgroud)

如果要打印字符串的未转义内容,请使用cat以下命令print

> cat('\\"')
\"
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅 R: 中的帮助?"'"

字符常量

单引号和双引号分隔字符常量。它们可以互换使用,但首选双引号(并且使用双引号打印字符常量),因此单引号通常仅用于分隔包含双引号的字符常量。

反斜杠用于在字符常量内开始转义序列。转义下表中没有的字符是错误的。

单引号在单引号字符串中需要用反斜杠转义,在双引号字符串中需要用双引号转义。

\n 换行符 \r 回车符 \t 制表符 \b 退格键 \a 警报(响铃)\f 换页符 \v 垂直制表符 \ 反斜杠 \ \' ASCII 撇号 ' \" ASCII 引号 " ` ASCII 重音符号(反引号)` \ nnn
具有给定八进制代码的字符(1、2 或 3 位数字) \xnn 具有给定十六进制代码的字符(1 或 2 个十六进制数字) \unnnn 具有给定代码的 Unicode 字符(1--4 十六进制数字) \Unnnnnnnn 具有给定代码的 Unicode 字符(1--8 十六进制数字)