Извлечь строку из повторяющегося слова в первый пробел, используя R - PullRequest
0 голосов
/ 22 января 2019

Я пытаюсь извлечь названия станций метро из вектора символов.Этим названиям станций всегда предшествует 'METRO-'.

Вот пример.

x <- c('BLA BLA BLA METRO-SNOWDON BLA BLI BLU', 'BLA VLA BLU METRO-SQUARE-VICTORIA YES NO')

Я хочу извлечь символы после METRO- до первого пробела.

Требуемый вывод должен выглядеть следующим образом:

"METRO-SNOWDON", "METRO-SQUARE-VICTORIA"

Я не могу понять часть кода "пробел"

sub('.*(METRO-)', '\\1', x)

Спасибо, парень!

1 Ответ

0 голосов
/ 23 января 2019

Этот шаблон будет работать до тех пор, пока в названии метро не будет пробелов:

gsub(".*?(METRO-.*?)\\s.*", "\\1", x)

.*? означает совпадать с чем угодно, пока не совпадет следующая часть шаблона.

Это особенно важно во второй раз, когда оно появляется, потому что мы хотим завершить группу захвата на первом экземпляре пробела после "METRO". Без ? группа захвата будет включать в себя все, вплоть до последнего экземпляра пробела.

Вышеприведенное выражение возвращает:

[1] "METRO-SNOWDON"         "METRO-SQUARE-VICTORIA"
...