Это то, что вы ожидаете. В этом случае есть много способов решить эту проблему, gsub
- это один из способов, вы также можете использовать str_extract
из stringr
или gregexpr
из Base R:
gsub("(.*)\n(\\w+\\s+\\w+)$","\\2", x)
Логика :
Выбор последнего буквенно-цифрового слова с помощью \ w, поскольку существует более одного, следовательно, используется жадный символ + (одно или несколько совпадений), поскольку он присутствует в конце предложения, используйте «$», чтобы заставить его работать, шаблон соответствия - это одно слово, разделенное пробелом, с другим, следовательно, есть два \ w + и одно \ s + для пробела.Оборачивание этих совпадений в группу захвата (с использованием скобок, они используются для захвата совпадения) и замена всего совпадения на эту группу захвата дает нам результат.
Использование stringr::str_extract
stringr::str_extract(x, "(\\w+\\s+\\w+)$")
Выход :
> gsub("(.*)\n(\\w+\\s+\\w+)$","\\2", x)
[1] "AB1 2CD"
Входные данные:
x <- "22 Generic Road,\nNotville,\nFaketon,\nUnited Kingdom,\nAB1 2CD"