Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java FilenameFilter正则表达式(展望)_Java_Regex_Lookahead_Filefilter - Fatal编程技术网

java FilenameFilter正则表达式(展望)

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

我正在尝试使用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.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;不使用正则表达式。