在R中,I';我在使用正则表达式操作符提取一年类型(2019年至1999年)和字符类型(1周至16周)的大量字符串时遇到困难

在R中,I';我在使用正则表达式操作符提取一年类型(2019年至1999年)和字符类型(1周至16周)的大量字符串时遇到困难,r,regex,R,Regex,具体来说,我有一个数据框,其中包含从多个文件夹位置的大量.csv文件中提取的大约600万条记录。“我的数据框”的行名称是文件夹位置名称,采用以下形式: 文件名 //用户/me/Desktop/R Scripts/FantasyPros fantasyfootball Model/FantasyPros fantasyfootball Weekly Data 1999-2019/2019/week1.csv.1 我希望能够拉出上面的粗体,这样我可以每年和每周对每个元素进行分类,但请注意,这一周的范

具体来说,我有一个数据框,其中包含从多个文件夹位置的大量.csv文件中提取的大约600万条记录。“我的数据框”的行名称是文件夹位置名称,采用以下形式:

文件名 //用户/me/Desktop/R Scripts/FantasyPros fantasyfootball Model/FantasyPros fantasyfootball Weekly Data 1999-2019/2019/week1.csv.1


我希望能够拉出上面的粗体,这样我可以每年和每周对每个元素进行分类,但请注意,这一周的范围是从第1周到第16周,这一年的范围是1999年到2019年。如果我需要的字符串总是在同一个字符串位置,但不确定如何参数化正则表达式操作符,那么我可以很容易地做到这一点。有什么建议吗?

这里有两个正则表达式,每个字符串提取一个

year <- sub(".*/(\\d+)/.*$", "\\1", x)
year
#[1] "2019"

week <- sub(".*/([^/\\.]+)[\\.].*$", "\\1", x)
#[1] "week1"

year假设年份始终出现在
/
内,并且周中始终包含文字

library(stringr)
str_extract(x, "(?<=/)\\d+(?=/)")
[1] "2019"

str_extract(x, "(?<=/)week\\d+(?=/|\\.)")
[1] "week1"
库(stringr)

str_extract(x,”(?我们可以使用
word
basename

library(stringr)
word(basename(x), 1, sep="\\.")
#[1] "week1"
数据
x
library(stringr)
word(basename(x), 1, sep="\\.")
#[1] "week1"
x <- "file_names //Users/me/Desktop/R Scripts/Fantasy Football Model/FantasyPros Fantasy Football Weekly Data 1999 - 2019/2019/week1.csv.1"