2013-05-23 2 views
1

Я хочу обрабатывать строки моего кадра данных, я получил эту картину в каждой строкеR регулярного выражения соответствия с зарезервированными символами

x= RPA4|RP1-117P191 

и я хочу это

RPA4 

Все, что после того, как труба удалена

Я пробовал с gsub, пытаясь получить только первую часть матча

gsub("^(\\.+)|*$", "\\1", x) 

и я получил то же самое. Не могли бы вы мне помочь, пожалуйста?

Заранее спасибо

ответ

2

Попробуйте это:

gsub("\\|.*", "", x) 

это заменяет все после | с пустой строкой.

Вы использовали \\.+, который соответствует символу . вместо любого символа. Также вы используете .+, который является жадным, поэтому вы должны использовать .+?, чтобы не захватывать все до конца. Символ трубы | означает «или» в регулярном выражении, поэтому вам нужно сбежать с \\|, чтобы соответствовать фактическому символу.

Другое решение (ближе к попытке) может быть:

gsub("^(.+?)\\|.+", "\\1", x) 
Смежные вопросы