R regex удаляет апостроф юникода

Допустим, у меня есть следующая строка в R:

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

Я пытался использовать регулярные выражения, чтобы стереть апостроф путем поиска и удаления \u0092:

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

Однако вышеприведенное, похоже, не работает и приводит к той же строке, что и оригинал. Как правильно сделать это удаление?

Кроме того, если я хотел удалить открытие и закрытие []Это более эффективно, чтобы сделать все это за один раз или в отдельных строках?

1 ответ

Решение

Вы можете использовать [^[:ascii:]] построить с Perl-подобным регулярным выражением, чтобы удалить не входящие в ASCII коды из вашего ввода, и вы можете добавить альтернативу [][] также соответствовать квадратным скобкам:

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

Посмотреть демо IDEONE

Если вы только планируете удалить \0092 символ, вам не нужно регулярное выражение типа Perl:

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

Посмотреть еще одну демонстрацию

Обратите внимание, что [...] класс символов, который соответствует 1 символу, здесь, либо ] или же [, или же \u0092, Если вы разместите ] в начале класса персонажа он не нуждается в экранировании. [ не нуждается в экранировании внутри класса символов (в R regex и в некоторых других вариантах).

Другие вопросы по тегам