在list.files中仅使用多个模式选择匹配的文件

时间:2017-08-21 14:28:15

标签: r regex string list

我有以下csv文件,我只想选择那些匹配' pop'和'吞吐量'每个字符串中的值:

example_pop_high_throughput_high_strategy.csv
example_pop_high_throughput_base_strategy.csv
example_pop_high_throughput_low_strategy.csv
example_pop_base_throughput_high_strategy.csv
example_pop_base_throughput_base_strategy.csv
example_pop_base_throughput_low_strategy.csv
example_pop_low_throughput_high_strategy.csv
example_pop_low_throughput_base_strategy.csv
example_pop_low_throughput_low_strategy.csv

我只想要这些:

example_pop_high_throughput_high_strategy.csv                
example_pop_base_throughput_base_strategy.csv
example_pop_low_throughput_low_strategy.csv

我可以使用list.files选择所有文件,例如' high':

file_names <- list.files("made/up/path", pattern = c("high"))

尽管如此,尝试两次这样做只是为了匹配&#39; high&#39;并且&#39;高&#39;,没有工作:

file_names <- list.files("made/up/path", pattern = c("high", "high"))

有没有办法选择匹配&#39; pop&#39;的文件?和&#39;吞吐量&#39;值,最好是单个表达式?

2 个答案:

答案 0 :(得分:4)

以下内容应该有效:

file_names <- list.files("made/up/path", pattern = c("(low|base|high).+\\1"))

答案 1 :(得分:3)

试试这个正则表达式:

^.*?pop_([^_]+)_throughput_\1.*$

Demo