Regex 查找不包括引号和反勾号的转义字符
我正在尝试使用Regex 查找不包括引号和反勾号的转义字符,regex,r,Regex,R,我正在尝试使用grep检测字符串向量中的所有转义字符,不包括引号和反勾号(,,`),但无法排列正确的正则表达式。以下是我尝试的内容: x <- c("i 4like...", NA, "\\rgreat", "\aI like it", "\\", "She said \"yes\"") grep("\\\\", x) && !grep("\\\"|\\\'|\\\`", x) 因为这些元素包含的转义字符不是引号或反勾号 请注意,R正则表达式是特定的,其他形式的正则表
grep
检测字符串向量中的所有转义字符,不包括引号和反勾号(,,`
),但无法排列正确的正则表达式。以下是我尝试的内容:
x <- c("i 4like...", NA, "\\rgreat", "\aI like it", "\\", "She said \"yes\"")
grep("\\\\", x) && !grep("\\\"|\\\'|\\\`", x)
因为这些元素包含的转义字符不是引号或反勾号
请注意,R正则表达式是特定的,其他形式的正则表达式可能不起作用或需要调整。我认为您可能正在寻找一些不存在的东西。当您这样做时
grep("\\\\", x)
实际上,您正在寻找字符串中的单个反斜杠。在R中键入反斜杠有一个转义级别,然后在正则表达式本身中有另一个转义级别
你在期待一场比赛
"\aI like it"
但是字符串本身没有实际的斜杠。如果您使用cat(x[4])
,您将看不到斜杠。\a
实际上是警报铃的“符号”。有关允许的转义字符,请参见?引号
您还会注意到,grep(“\\\\”,x)
与“她说”是“
”不匹配。同样,这是因为字符串中没有实际的斜杠。这只是R在控制台中默认编码它们的方式。您可以执行cat(x[6])
来查看未转义的版本以及nchar(x[6])
确认它有14个字符而不是16个字符
"\aI like it"