2013-08-27 37 views
0

我想使用FilenameFilter過濾文件來grep目錄中的文件文件。java FilenameFilter正則表達式(向前看)

% ls -1 
DirFilter.class 
DirList.class 
DirList.java 
doctors.txt 
node.l 
rels.l 

我試圖篩選node.lrels.l。當且僅當文件都存在時,篩選才能成功。

我試過debuggex.com我正則表達式,它似乎按預期方式工作: http://www.debuggex.com/embed/CZgVeUE2iWsNfRNG

我正則表達式:(?s)node.l.?(?=(rels.l))

但是當我通過DirList.java過濾器運行它,它不工作..

% java DirList "(?s)node.l.?(?=(rels.l))" 
<no-output> 

現在我使用DirList.java從Java中 http://www.cs.odu.edu/~cs476/tijava2/c10/DirList.java

思考210

任何想法?

+0

我沒有看到代碼的鏈接'DirFilter'類中的任何正則表達式的方法。 'return f.indexOf(afn)!= -1;'不使用正則表達式。 – Pshemo

回答

1

DirList單獨評估你對每一個文件名正則表達式,而不是一個單一的\n分隔的目錄列表的字符串由ls返回。您的正則表達式在這些條件下永遠不會匹配,因爲它一次不會看到多個文件名。

+0

謝謝你有道理。 – manish

1

FilenameFilter適用於單個文件而不適用於文件組,因此正則表達式將僅應用於該單個文件。代替正則表達式的嘗試也許是這樣的:文件

      1. 取的名字,如果它是node.l檢查new File(currentDir+"/rels.l").exists()
      2. 如果是rels.l請檢查是否new File(currentDir+"/node.l").exists()