java FilenameFilter正则表达式(展望)
我正在尝试使用FilenameFilter过滤文件,以grep目录中的文件java FilenameFilter正则表达式(展望),java,regex,lookahead,filefilter,Java,Regex,Lookahead,Filefilter,我正在尝试使用FilenameFilter过滤文件,以grep目录中的文件 % ls -1 DirFilter.class DirList.class DirList.java doctors.txt node.l rels.l 我正在尝试筛选node.l和rels.l。当且仅当两个文件都存在时,筛选才会成功 我在debuggex.com上尝试了我的正则表达式,它似乎如预期的那样工作: 我的正则表达式:(?s)node.l.(?=(rels.l)) 但是当我通过DirList.javafil
% ls -1
DirFilter.class
DirList.class
DirList.java
doctors.txt
node.l
rels.l
我正在尝试筛选node.l
和rels.l
。当且仅当两个文件都存在时,筛选才会成功
我在debuggex.com上尝试了我的正则表达式,它似乎如预期的那样工作:
我的正则表达式:(?s)node.l.(?=(rels.l))
但是当我通过DirList.java
filter运行它时,它不起作用
% java DirList "(?s)node.l.?(?=(rels.l))"
<no-output>
%java目录“(?s)node.l.(?=(rels.l))”
现在我使用的是DirList.java,它来自java思维
有什么想法吗?
DirList
将分别根据每个文件名评估您的正则表达式,而不是作为由ls
返回的单个\n
分隔目录列表字符串。在这些条件下,您的正则表达式将永远不会匹配,因为它一次不会看到多个文件名。FilenameFilter适用于单个文件,而不适用于文件组,因此正则表达式将仅应用于该单个文件。不要使用正则表达式,请尝试以下方法:
- 如果是
请检查node.l
新文件(currentDir+“/rels.l”).是否存在()
- 如果是
请检查rels.l
李>新文件(currentDir+“/node.l”).是否存在()
在链接中的代码中,我没有在
DirFilter
类中看到任何正则表达式方法<代码>返回f.indexOf(afn)!=-1;代码>不使用正则表达式。