Как извлечь последние 4 цифры строки символов в R

Я хотел бы извлечь ПОСЛЕДНИЕ 4 цифры в заданной строке, но не могу понять. ПОСЛЕДНИЕ 4 цифры могут быть «XXXX» или «XXXX-». В конечном итоге у меня есть список разнородных записей, которые включают отдельные годы (например, 2001 или 2001), списки лет (например, 2001, 2004), диапазон лет (например, 2001-2010) или их комбинацию. с тире («-») в конце записи или без него.

Я понимаю, что «$» - это токен для обозначения КОНЕЦ, а «^» используется для обозначения НАЧАЛА в регулярных выражениях. Я легко могу извлечь FIRST 4. Вот пример того, что я могу сделать, и код, который не работает для ПОСЛЕДНИХ 4 цифр:

library(stringr)
test <- c("2009-", "2008-2015", "2001-, 2003-2010, 2012-")
str_extract_all(test, "^[[:digit:]]{4}") # Extracts FIRST 4

[[1]]

[1] "2009" "2008" "2001"

str_extract_all(test, "[[:digit:]]{4}$") # Does not extract LAST 4

[[1]]

персонаж (0)

[[2]]

"2015"

[[3]]

персонаж (0)

str_extract_all(test, "\\d{4}$")

[[1]]

персонаж (0)

[[2]]

"2015"

[[3]]

персонаж (0)

Результат, которого я желаю:

[1] "2009" "2015" "2012"


person Jonathan D. Stallings    schedule 10.10.2016    source источник


Ответы (1)


Можем попробовать с sub

sub(".*(\\d+{4}).*$", "\\1", test)
#[1] "2009" "2015" "2012"
person akrun    schedule 10.10.2016