正则表达式提取 R 中的部分文件名

问题描述 投票:0回答:1

我正在将多个 Excel 文件读入 R,并且我想使用部分文件名作为数据。 我的文件名在列表中,如下所示: “文件夹//study30/01_study30_Baseline.xlsx”和“文件夹//study30/01_study30_6M.xlsx”

我提取研究编号(在本例中为

30
),如下所示:

qtest = "Folder//Subfolder/study30/01_study30_Baseline.xlsx"
qt1 = gsub("Folder//Subfolder/study", "", qtest) 
qt1
[1] "30/01_study30_Baseline.xlsx"

qt2 = gsub("\\/\\S+\\.xlsx$", "", qt1)
qt2
[1] "30"

现在我想提取时间,在这些示例中为“Baseline”和“6M”。 这是我的尝试,从“.xlsx”向后阅读:

time = grep("/\\_[A-Za-z0-9]+\\.xlsx$", t1 , value= T)

这是不正确的。在这些示例中获取“Baseline”和“6M”的正确正则表达式是什么?

r regex grep
1个回答
0
投票

你可以使用

sub("^(?:.*_)?([^_/]+)\\.xlsx$", "\\1", qtest)

请参阅 正则表达式演示

查看 R 演示

x <- c("Folder//Subfolder/study30/01_study30_Baseline.xlsx", "Folder//study30/01_study30_6M.xlsx")
sub("^(?:.*_)?([^_/]+)\\.xlsx$", "\\1", x)
## => [1] "Baseline" "6M"      
© www.soinside.com 2019 - 2024. All rights reserved.