2015-05-17 2 views
-2

У меня есть вектор строк, который выглядит примерно так: c("[email protected]", "[email protected]"). По какой-то причине после @ есть случайные/разные цифры, и я пытаюсь их удалить. Используя регулярное выражение, как я могу сказать R, чтобы удалить или заменить цифры, которые появляются после "@", поэтому я заканчиваю c("[email protected]", "[email protected]"). Я мало знаю о Regex, поэтому я действительно очень хочу, чтобы кто-то мог предоставить не только код, но и краткое описание кода. Благодаря!Как заменить текст в R, используя регулярное выражение?

+1

@Thomas имеет то, что в боян? С этого момента каждый вопрос о замене текста является обманом 'gsub (" e "," ", x)'? Регулярное выражение в «dupe» имеет точный тип соответствия, в то время как в этом вопросе он немного сложнее –

ответ

1

Вы можете использовать положительный или \K 'назад

sub("(?<[email protected])\\d+", "", x, perl=T) 

\\d+ соответствует одному или более символов цифр. Таким образом, (?<[email protected]) заставляет механизм регулярных выражений выглядеть сразу после символа @, а затем сделать его соответствующим следующему одному или нескольким символам цифр. Поскольку образы принадлежат семейству PCRE, вам необходимо включить параметр perl=TRUE.

ИЛИ

sub("@\\K\\d+", "", x, perl=T) 
+0

Спасибо большое! Есть ли причина, по которой вы не просто используете более простые 'sub (" @ \\ d + "," @ ", x)'? – hsl

+0

@hsl, потому что это уже упоминалось. Мы могли бы написать по крайней мере два ответа для одного вопроса, основанного на регулярном выражении. :-) Это красота регулярного выражения. –

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