2013-11-01 65 views
1

我想列出一個目錄中所有文件的開頭都帶有「xyz」,並且第一個下劃線後面有一個2。R - 正則表達式

例如,xyzfjd_2_34_1.png,xyz-39_2dog.jpg會起作用,而xyzdog_3_dog.png不起作用。

我試圖

list.files(dir, pattern="^xyz*_2*"); 

這顯然是錯誤的,主要是因爲我甚至不知道我在做什麼...

回答

3

做文件名沒有下劃線的比賽?我假設不。

我想你是在解釋任何角色的*。相反,.是任何字符。 *是「0次或更多次」。所以你的模式^xyz*_2*可以匹配xy_xyzzzz_222。它不會匹配xyz1_2

嘗試:文件名

  • xyz
  • [^_]*字符的任意組合的

    list.files(dir, pattern = "^xyz[^_]*_2") 
    
    • ^開始就知道是不是_(包括空字符串)
    • _2,下劃線其次是兩個。

    我不擔心名稱的其餘部分,因爲該模式只需要匹配部分文件名。