如何从字符串中提取重复的模式

How to extract repeated pattterns from a string

我需要从下面的文本中提取某些模式。

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Budget 2016-2017 
Curabitur dictum gravida mauris. Budget 2015-2016 mauris ut leo. Cras 
viverra metus rhoncus sem

我需要获取文本的 'Budget \d{4}-\d{4}' 部分,使其看起来像:

 [1] "Budget 2016-2017" "Budget 2015-2016"

你可以通过以下方式得到你想要的:

library(stringr)
string <- "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Budget 2016-2017 Curabitur dictum gravida mauris. Budget 2015-2016 mauris ut leo. Cras  viverra metus rhoncus sem"

unlist(str_extract_all(string, 'Budget [0-9]{4}-[0-9]{4}'))

结果:

> unlist(str_extract_all(string, 'Budget [0-9]{4}-[0-9]{4}'))
[1] "Budget 2016-2017" "Budget 2015-2016"

接近

s <- "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Budget 2016-2017 Curabitur dictum gravida mauris. Budget 2015-2016 mauris ut leo. Cras  viverra metus rhoncus sem"

gsub(".*(Budget [0-9]{4}-[0-9]{4}).*", "\1", s)
[1] "Budget 2015-2016"