首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >查找转义字符(不包括引号和回勾)

查找转义字符(不包括引号和回勾)
EN

Stack Overflow用户
提问于 2014-07-08 18:53:31
回答 1查看 123关注 0票数 2

我试图在字符串向量中检测所有转义字符,不包括引号和倒计时("'`),但无法安排正确的正则表达式。以下是我尝试过的:

代码语言:javascript
运行
复制
x <- c("i 4like...", NA, "\\rgreat", "\aI like it", "\\", "She said \"yes\"")

grep("\\\\", x) && !grep("\\\"|\\\'|\\\`", x) 

我期望得到以下结果:

代码语言:javascript
运行
复制
[1] 3 4 5

因为这些元素包含转义字符,这些字符不是引号或倒计时。

请注意R正则表达式是特定的,其他形式的正则表达式可能无效或需要调整。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-08 19:29:59

我想你可能在找不存在的东西。当你做的时候

代码语言:javascript
运行
复制
grep("\\\\", x)

实际上,您正在寻找字符串中的一个文字反斜杠。有一个级别的转义可以在R中键入反斜杠,然后还有一个级别来转义正则表达式本身中的斜杠。

你在期待一场比赛

代码语言:javascript
运行
复制
"\aI like it"

但是字符串本身没有真正的斜线。如果你做cat(x[4]),你就不会看到斜杠。\a实际上是警报钟的“符号”。有关允许的转义字符,请参见?Quotes

您还会注意到,grep("\\\\", x)"She said \"yes\""不匹配。同样,这是因为字符串中没有实际的斜杠。这正是R默认情况下在控制台中对它们进行编码的方式。您可以通过cat(x[6])查看未转义的版本,也可以通过nchar(x[6])确认它有14个字符,而不是16个字符。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24639597

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档