Предположим, у вас есть такая строка:
txt <- c("Ardbeg, 1974 Vintage, Cask #3145, 49.9%",
"Dun Bheagan (distilled at Springbank), Cask No. 1704, 35 year old, 1970 vintage, 50.5%",
"Someotherstuff, Cask #1234, 200 years old, 1820 vintage, 99.9%")
Чтобы извлечь интересующие годы (между 1917 и 2017), вы можете сначала извлечь все лет, используя str_extract_all
из stringr
, а также отрицательный вид сзади в (?<!(No.\\s|Cask #))
, который предотвращает совпадение , если No.\\s
или Cask #
появляется слева от \\d{4}
:
library(stringr)
years_all <- as.numeric(unlist(str_extract_all(txt, "(?<!(No.\\s|Cask #))\\d{4}")))
years_all
[1] 1974 1970 1820
Тогда, чтобы выделить интересующие годы, вы можете поднастроить years_all
соответственно:
years_all[years_all >= 1917 & years_all<=2017]
[1] 1974 1970