Я использую регулярные выражения для разбора имен автомобилей.
Поскольку существует множество версий Golf
, я хочу исключить все, что следует за ним, кроме Golf SportsWagen
.
Моя попытка:
> some_versions <- c("Golf A5", "Golf SportsWagen", "Cross Golf", "Golf A6")
> str_replace( some_versions, "Golf( SportsWagen)?", "Golf\\1" )
[1] "Golf A5" "Golf SportsWagen" "Cross Golf" "Golf A6"
Но это дает весь оригинальный вектор some_versions
Напротив, если я запускаю матчи, я получаю то, что ожидается:
> str_match(some_versions, "Golf( SportsWagen)?")
[,1] [,2]
[1,] "Golf" NA
[2,] "Golf SportsWagen" " SportsWagen"
[3,] "Golf" NA
[4,] "Golf" NA
с NA
, где нет совпадений.
Я бы хотел получить:
> str_replace(some_versions, "pattern", "Golf\\1")
> "Golf" "Golf SportsWagen" "Golf" "Golf"
Кто-нибудь знает, как я могу это исправить?
Кроме того, мое следующее требование - захватить Cross Golf
.
Спасибо.