R中列出文件的特定模式

时间:2018-10-29 12:22:34

标签: r regex

在使用list.files匹配非常特定的模式时,我遇到问题。我有一组具有这种模式“ namefile_YYYY-mm-dd.csv” 的文件,但是,如果一个文件生成了多次,那么我将得到类似的内容: namefile_YYYY-mm-dd_something-else.csv“ 。这就是我用的:

list.files(path = "\\projects\\datasets", pattern = "^Participants_(.*)csv$",all.files = FALSE, full.names = FALSE, recursive = FALSE)

这是输出: “参加者_2018-07-18.csv” “参加者_2018-07-19.csv” “参加者_2018-07-21.csv” “参加者_2018-07-28.csv” “参与者_2018-08-04 new.csv” “参加者_2018-08-04.csv” “参加者_2018-08-11.csv” “参加者_2018-08-18-for-analysis.csv” “参加者_2018-08-18.csv” “参加者_2018-08-25.csv” “参加者_2018-09-01.csv” “ Participants_2018-09-08.csv”

但是我不想要所有这些。我希望列表中仅包含此格式的名称“ Participants_2018-07-18.csv” ,并排除其他任何格式的名称,例如:“ Participants_2018-08-04 new .csv” “参与者_2018-08-18-for-analysis.csv”

我尝试了几件事

list.files(path = "\\projects\\datasets", pattern = "^Participants_[0-9]\\.csv$",all.files = FALSE, full.names = FALSE, recursive = FALSE)]

但列表为空。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

通过将Participants_替换为.*,可以匹配\\d{4}-\\d{2}-\\d{2}之后仅包含类似日期模式的那些文件名:

list.files(path = "\\projects\\datasets", pattern = "^Participants_\\d{4}-\\d{2}-\\d{2}\\.csv$",all.files = FALSE, full.names = FALSE, recursive = FALSE)

请参见regex demo

\d{4}-\d{2}-\d{2}的正则表达式模式匹配任意四个数字,然后匹配-和任意两个数字两次。