我正在尝试使用FilenameFilter过滤文件,以grep目录中的文件。
% ls -1
DirFilter.class
DirList.class
DirList.java
doctors.txt
node.l
rels.l
我正在尝试筛选node.l
和rels.l
。如果且仅当两个文件都存在时,筛选应成功。
我在debuggex.com上尝试了我的regex,它似乎按预期工作:http://www.debuggex.com/embed/CZgVeUE2iWsNfRNG
我的正则表达式:(?s)node.l.?(?=(rels.l))
但当我通过DirList.java
过滤器时,它不起作用。。
% java DirList "(?s)node.l.?(?=(rels.l))"
<no-output>
现在我正在使用Thinking in java中的DirList.javahttp://www.cs.odu.edu/~cs476/tijava2/c10/DirList.java
有什么想法吗?
DirList
针对每个文件名单独评估正则表达式,而不是像ls
返回的那样作为单个n
分隔的目录列表字符串。正则表达式在这些条件下永远不会匹配,因为它一次不会看到多个文件名。
FilenameFilter适用于单个文件,而不适用于文件组,因此regex将仅应用于该单个文件。代替正则表达式,尝试以下方式:
- 采用文件名
-
- 如果是CCD_ 8,则检查是否为CCD_
- 如果是CCD_ 10,则检查是否为CCD_