R - gsub, заменяющий обратную косую черту
17959 просмотра
1 ответ
Я хотел бы использовать gsub
для замены каждого вхождения обратной косой черты в строке с двумя обратными косыми чертами.
В настоящее время я попробовал это gsub("\\\\", "\\", x)
. Это, похоже, не работает, хотя. Тем не менее, если я изменю выражение, чтобы вместо каждой обратной косой черты заменить на «а», оно будет работать нормально.
> gsub("\\\\", "\\", "\\")
[1] ""
> gsub("\\\\", "a", "\\")
[1] "a"
> gsub("\\\\", "\\\\", "\\")
[1] "\\"
Последний символ - это только один обратный слеш; R просто печатает 2, потому что он печатает экранированные символы с обратной косой чертой. Использование nchar
подтверждает, что длина равна 1.
Что вызывает эту функциональность? Второй аргумент gsub
не является регулярным выражением, поэтому наличие 4-х обратных косых черт в строковом литерале должно быть преобразовано в символ с 2-мя обратными слешами. Еще менее важно, что первый gsub
приведенный выше вызов возвращает пустую строку.
Ответы (1)
30 плюса
Вот что вам нужно:
gsub("\\\\", "\\\\\\\\", "\\")
[1] "\\\\"
Причина, по которой вам нужно четыре обратных слеша для представления одного буквального обратного слеша, заключается в том, что "\"
это escape-символ как в R-строках, так и для механизма регулярных выражений, которому вы в конечном итоге передаете свои шаблоны. Если бы вы говорили напрямую с движком регулярных выражений, вы бы "\\"
указали буквальный обратный слеш. Но для того, чтобы R перешел "\\"
к движку регулярных выражений, вам нужно набрать "\\\\"
.
(Если вы просто хотите удвоить обратную косую черту, вы можете использовать это вместо этого):
gsub("\\", "\\\\", "\\", fixed=TRUE)
[1] "\\\\"
Автор: Josh O'Brien
Размещён: 15.12.2014 07:57
Вопросы из категории :
- regex Learning Regular Expressions
- regex Regex и unicode
- regex Мое регулярное выражение слишком подходит. Как мне это остановить?
- regex Как выполнить подстановку Perl для строки, сохранив оригинал?
- regex Замена n-го экземпляра совпадения с регулярным выражением в Javascript
- regex Как заменить простые URL ссылками?
- r Как получить доступ к последнему значению в векторе?
- r Пакеты оптимизации для R
- r Есть ли у R такие операторские операции, как Perl qw ()?
- r Библиотека / инструмент для рисования тройных / треугольных графиков
- r Участки без заголовков / надписей в R
- r Расчет скользящей средней
- gsub Ruby Gsub не избежать одиночных кавычек
- gsub Замена «true» / «false» изображениями
- gsub Заменить символы с помощью gsub, как создать функцию?
- gsub Рубиновая замена нескольких строк
- gsub Удалить все после пробела в строке
- gsub Удалить шаблон из строки с помощью gsub