2017-02-15 6 views
0

Предположим, у меня есть строка, которая имеет следующие символыиспользуя GSUB функцию г удалить слэш

"\"------------080209060700030309080805\"" 

И теперь я хочу использовать GSUB функцию в г удалить «\ и \» часть, и только сохраните следующие символы:

"------------080209060700030309080805\" 

Может ли кто-нибудь помочь мне разобраться, как мне это сделать должным образом?

+1

' "------------ 080209060700030309080805 \"', как результат выглядит как опечатка: Do Y ou действительно хотите, чтобы окончательная обратная косая черта была частью вашего результата? Пожалуйста, отредактируйте свой ответ ... –

+0

Пожалуйста, покажите нам в текстовом виде, какие должны быть входные и выходные данные. Не беспокойтесь о побеге в R. –

+0

Вход здесь выглядит следующим образом: "\" ------------ 080209060700030309080805 \ "", это на самом деле от спама/данные ветчины из книги по научным исследованиям. И я хочу использовать функцию gsub только для захвата части «------------ 080209060700030309080805», что означает, что я хочу избавиться от косой черты здесь, но в настоящее время кажется, что у меня нет хороший способ сделать это. – tql66

ответ

1
string <- "\\------------080209060700030309080805\\" 
string <- gsub("^\\\\(.*)\\\\$", "\\1", string) 

Примечание: рисунок я был ^\(.*)\$, который будет соответствовать все между началом и заканчивающимся обратным косой чертой. Это будет соответствовать только строкам, которые начинаются и заканчиваются обратным слэшем. Кроме того, мы используем четыре обратной косой черты (\\\\), чтобы представить буквальную обратную косую черту для рисунка в gsub(). Нам нужно выйти дважды, один раз для R, и второй раз для двигателя регулярных выражений.

4

Edit 1: Исправлена ​​ошибка (два обратных слэша, необходимых для создания обратной косой черты в строке):

s <- '\\"------------080209060700030309080805\\"' 
s 
gsub('\\"', "", s, fixed = TRUE) 

приводит

> s <- '\\"------------080209060700030309080805\\"' 
> s 
[1] "\\\"------------080209060700030309080805\\\"" 
> gsub('\\"', "", s, fixed = TRUE) 
[1] "------------080209060700030309080805" 

Пожалуйста, обратите внимание, что один обратный слэш в R является код выхода, который НЕ является частью строки:

> charToRaw('\\"') 
[1] 5c 22 
> charToRaw('\"') 
[1] 22 

Для того, чтобы создать одну обратную косую черту, вы должны использовать две обратные косые черты в цитируемой строке. Если вы печатаете эту строку обратной косой черты снова спасся, которая выглядит запутанным:

> print('\\"') 
[1] "\\\"" 

Если вы хотите напечатать неэкранированный содержимое строки использовать cat вместо print:

> cat('\\"') 
\" 

подробнее см помощь в Р: ?"'":

Характер константы

Одиночные и двойные кавычки с разделительными символами. Они могут использоваться как взаимозаменяемые, но двойные кавычки являются предпочтительными (а символ константы печатаются с использованием двойных кавычек), поэтому одинарные кавычки обычно используются только для разграничения символьных констант, содержащих двойные цитаты.

Обратная косая черта используется для запуска escape-последовательности внутри символа константы. Экранирование символа не в следующей таблице является ошибкой .

Одинарные кавычки должны быть экранированы обратной косой чертой в строках с одиночными кавычками и двойными кавычками в строках с двойными кавычками.

\ п новой строки вкладка возврата \ г каретки \ т \ Ъ забой \ предупреждающим (колокол) \ F Форма подачи \ V вертикальной вкладке \ обратной косой черты \ \ 'ASCII-апостроф' \ "ASCII-кавычки" `ASCII-тяжелое accent (backtick) `\ nnn
символ с заданным восьмеричным кодом (1, 2 или 3 цифры) \ xnn символ с заданным шестнадцатеричным кодом (1 или 2 шестнадцатеричных разряда) \ unnnn Символ Юникода с данный код (1--4 шестнадцатеричных цифр) \ символ Unnnnnnnn Unicode с заданным кодом (1--8 шестнадцатеричных цифр)

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