假设我在R中有以下字符串:
text <- "[Peanut M&M\u0092s]"
我一直试图通过搜索和删除\u0092
来使用正则表达式删除撇号:
replaced <- gsub("\\\\u0092", "", text )
然而,上述似乎不起作用,并导致与原始行相同的行。删除的正确方法是什么?
此外,如果我想删除开始和结束[]
,那么一次性完成这项工作还是单独一行更有效率?
答案 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正则表达式和其他一些类型中)。