2016-06-15 9 views
4

Я пытаюсь удалить все символы, предшествующие первый экземпляр буквы для каждой строки в векторе строк:Удалить символы до первого экземпляра заглавной буквы в строке в R

x <- c(" its client Auto Group", "itself and Phone Company", ", client Large Bank") 

Я пробовал:

sub('.*?[A-Z]', '', x) 

Но что возвращает:

"uto Group" "hone Company" "arge Bank" 

Мне нужно, чтобы вернуться:

"Auto Group" "Phone Company" "Large Bank" 

Любые идеи?

Спасибо.

+0

'sub (" ^. *? ([A-Z]) "," \\ 1 ", x)' –

+1

Спасибо Wiktor! Можете ли вы добавить в качестве ответа, чтобы я мог принять? Кроме того, что означает «\\ 1»? – carozimm

+0

Извините, я «дома один» с детьми. Добавлено с быстрым объяснением. –

ответ

4

Вы должны использовать группу захвата с обратной ссылкой:

sub("^.*?([A-Z])", "\\1", x) 

Здесь

  • ^ - начало строки
  • .*? - любые 0+ персонажей как можно
  • ([A-Z]) - Группа захвата 1, захватывающая прописную букву ASCII, на которую будут ссылаться \1 в схеме замены.

Итак, что мы восстанавливаем, что мы зафиксировали в результате с помощью обратной ссылки.

+0

Отлично, получилось, спасибо. – carozimm

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

  • Нет связанных вопросов^_^