R正则表达式删除unicode撇号

时间:2015-11-07 00:12:25

标签: regex r unicode gsub

假设我在R中有以下字符串:

text <- "[Peanut M&M\u0092s]"

我一直试图通过搜索和删除\u0092来使用正则表达式删除撇号:

replaced <- gsub("\\\\u0092", "", text )

然而,上述似乎不起作用,并导致与原始行相同的行。删除的正确方法是什么?

此外,如果我想删除开始和结束[],那么一次性完成这项工作还是单独一行更有效率?

1 个答案:

答案 0 :(得分:5)

您可以将[^[:ascii:]]构造与类似Perl的正则表达式一起使用,以从输入中删除非ASCII代码,并且可以添加替代[][]以匹配方括号:

text <- "[Peanut M&M\u0092s]"
replaced <- gsub("[][]|[^[:ascii:]]", "", text, perl=T)
replaced
## => [1] "Peanut M&Ms"

请参阅IDEONE demo

如果您只打算删除\0092符号,则不需要像正则表达式那样的Perl:

replaced <- gsub("[][\u0092]", "", text)

请参阅another demo

请注意,[...]是与1个符号匹配的字符类,此处为][\u0092。如果将]放在字符类的开头,则不需要转义。 [不需要在字符类中进行转义(在R正则表达式和其他一些类型中)。