javaFileNameFilter正则表达式(向前看)



我正在尝试使用FilenameFilter过滤文件,以grep目录中的文件。

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

我正在尝试筛选node.lrels.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将仅应用于该单个文件。代替正则表达式,尝试以下方式:

  1. 采用文件名
    • 如果是CCD_ 8,则检查是否为CCD_
    • 如果是CCD_ 10,则检查是否为CCD_

最新更新