R正则表达式删除unicode撇号

R regex remove unicode apostrophe

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

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

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

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

但是,上面的方法似乎不起作用,结果与原始结果在同一行。执行此删除操作的正确方法是什么?

此外,如果我想去掉开闭[],是一次性完成还是分行完成更有效率?

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

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

IDEONE demo

如果您只打算删除 [=14=]92 符号,则不需要像正则表达式这样的 Perl:

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

another demo

请注意,[...] 是匹配 1 个符号的字符 class,此处为 ][,或 \u0092。如果把]放在字符class的开头,就不需要转义了。 [ 不需要在字符 class 内转义(在 R 正则表达式和其他一些风格中也是如此)。