使用grep查找带反斜杠的字符串 - 字符转义

时间:2016-07-26 07:50:15

标签: regex r grep escaping

我很难在正则表达式中使用\作为chatterer。任何想法如何使这项工作?

grep(pattern = '\', "text with \ backslash", value = T )
# Expected output: [1] "text with  backslash"

2 个答案:

答案 0 :(得分:3)

R字符串中的单个\无效,因为\是转义字符。单个反斜杠实际上由两个反斜杠\\表示。第一个用作转义字符,第二个用作实际反斜杠。函数cat可用于打印最终字符串(与内部R表示形成对比)。

text <- "text with \\ backslash"
text
# [1] "text with \\ backslash"
cat(text)
# text with \ backslash

因为R字符串中的单个反斜杠由两个反斜杠\\表示,所以在正则表达式中需要四个反斜杠\\\\。这是因为\也是正则表达式中的转义字符。因此,\\\\可以解释为\\两次。

grep(pattern = '\\\\', text, value = TRUE)
# [1] "text with \\ backslash"

答案 1 :(得分:0)

如果您想将\符号替换为以获取"text with backslash",可以尝试使用gsub

gsub(x ="text with \ backslash",pattern = "\\\\", replacement = "",fixed = T)

有关符号表达式的更多信息,请参阅第59页的本文档: http://gastonsanchez.com/Handling_and_Processing_Strings_in_R.pdf