使用模式选择R中任何部分具有XX的文件

时间:2015-05-10 21:33:13

标签: r list file pattern-matching

我有一个文件夹,其中包含名称如下的文件,例如:

[1] "./final_model_pre/pre_pe_ja_bc_wm.tif"          "./final_model_pre/pre_pe_ja_bc_wm.tif.aux.xml" 
 [3] "./final_model_pre/pre_pe_ja_bc_wm.tif.ovr"      "./final_model_pre/pre_an_le_glm_wm.tif"        
 [5] "./final_model_pre/pre_an_le_glm_wm.tif.aux.xml" "./final_model_pre/pre_an_le_glm_wm.tif.ovr"    
 [7] "./final_model_pre/pre_an_bo_ma_wm.tif"          "./final_model_pre/pre_an_bo_ma_wm.tif.aux.xml" 
 [9] "./final_model_pre/pre_an_bo_ma_wm.tif.ovr"      "./final_model_pre/pre_pe_ja_mx_wm.tif"         
[11] "./final_model_pre/pre_pe_ja_mx_wm.tif.aux.xml"  "./final_model_pre/pre_pe_ja_mx_wm.tif.ovr"     
[13] "./final_model_pre/pre_pe_ja_rf1_wm.tif"         "./final_model_pre/pre_pe_ja_rf1_wm.tif.aux.xml"
[15] "./final_model_pre/pre_pe_ja_rf1_wm.tif.ovr"     "./final_model_pre/pre_pe_ja_svm_wm.tif"        
[17] "./final_model_pre/pre_pe_ja_svm_wm.tif.aux.xml" "./final_model_pre/pre_pe_ja_svm_wm.tif.ovr" 

我想列出名称中"pe_ja"的所有文件,并且只有".tif"个扩展名,而不是".tif.ovr"".tif.aux.xml"或任何其他扩展名。我正在尝试使用list.files函数,但我无法正确使用pattern agrument。你能帮帮我吗? 谢谢! P.S。:我正在使用R。

2 个答案:

答案 0 :(得分:2)

您可以使用正则表达式。

  dist_string   
 -------------

  0987ghasdf7


  4r5thgffghk
  2qrt75434th

  9uh7ygwedf6

正则表达式末尾的files = list.files(pattern = '.*pe_ja.*\\.tif$') 表示这是字符串的结尾。 $是一个转义期,表示您要匹配句点(不是任何字符,\\.通常匹配的字符。)

.任意次数(包括0)选择任何字符。

答案 1 :(得分:1)

试试这一句files = list.files(pattern = '.*pe_ja.*\.tif$')请注意,为了逃避.您需要此表达式\.而不是\\.,此表达式\\. 表示转义\字符并匹配.之后除新行之外的任何字符 试试这个Regex101 test file names