Извлечь год, в пределах полосы пропускания, в тексте, используя регулярное выражение в R - PullRequest
0 голосов
/ 04 мая 2020

Мне нужно извлечь годы (винтаж виски) из Струны. но только ценность между 1900 и 2017 годами. Может ли кто-нибудь помочь мне узнать выражение регулярного выражения? спасибо

1 Ответ

0 голосов
/ 04 мая 2020

Предположим, у вас есть такая строка:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...