【问题标题】:Using pattern to select files that has XX at any part the name in R使用模式选择 R 中任何部分名称为 XX 的文件
【发布时间】:2015-05-10 21:33:12
【问题描述】:

我有一个文件夹,里面装满了类似这些名称的文件,例如:

[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。

【问题讨论】:

    标签: r list file pattern-matching


    【解决方案1】:

    您可以为此使用正则表达式。

    files = list.files(pattern = '.*pe_ja.*\\.tif$')
    

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 你必须使用\\.,因为R首先将“\\”解释为“\”字符,因为“\”也是R的转义字符,然后“\”字符得到传递给正则表达式引擎。
      猜你喜欢
      • 1970-01-01
      • 2011-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-13
      • 2012-01-06
      相关资源
      最近更新 更多