Этот шаблон будет работать до тех пор, пока в названии метро не будет пробелов:
gsub(".*?(METRO-.*?)\\s.*", "\\1", x)
.*?
означает совпадать с чем угодно, пока не совпадет следующая часть шаблона.
Это особенно важно во второй раз, когда оно появляется, потому что мы хотим завершить группу захвата на первом экземпляре пробела после "METRO". Без ?
группа захвата будет включать в себя все, вплоть до последнего экземпляра пробела.
Вышеприведенное выражение возвращает:
[1] "METRO-SNOWDON" "METRO-SQUARE-VICTORIA"