2015-11-07 2 views
3

Допустим, у меня есть следующие строки в R:R регулярных выражений удалить юникода апостроф

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

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

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

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

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

+0

Не знаю _gsub_, но почему бы просто не использовать hex '\ x92' - его действительный расширенный ascii. ? – sln

+0

или 'gsub (" [] [\\\ u0092] ", '', текст)' для лучшей читаемости – rawr

ответ

3

Вы можете использовать [^[: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-regex и в некоторых других вариантах).

Смежные вопросы