Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.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文件扩展名regex_Java_Regex - Fatal编程技术网

Java文件扩展名regex

Java文件扩展名regex,java,regex,Java,Regex,我正试图找到一个Java正则表达式,它只有在具有有效扩展名的情况下才与文件名匹配。例如,它应该匹配“foo.bar”和“foo.b”,但既不匹配“foo.”也不匹配“foo” 我已经编写了以下测试程序 public static void main(String[] args) { Pattern fileExtensionPattern = Pattern.compile("\\.\\w+\\z"); boolean one = fileExtensionPattern.matche

我正试图找到一个Java正则表达式,它只有在具有有效扩展名的情况下才与文件名匹配。例如,它应该匹配“foo.bar”和“foo.b”,但既不匹配“foo.”也不匹配“foo”

我已经编写了以下测试程序

public static void main(String[] args) {
  Pattern fileExtensionPattern = Pattern.compile("\\.\\w+\\z");

  boolean one = fileExtensionPattern.matcher("foo.bar").matches();
  boolean two = fileExtensionPattern.matcher("foo.b").matches();
  boolean three = fileExtensionPattern.matcher("foo.").matches();
  boolean four = fileExtensionPattern.matcher("foo").matches();

  System.out.println(one + " " + two + " " + three + " " + four);
}
我希望它打印“true-false-false”,但它会打印所有4种情况下的false。我哪里做错了

干杯, Don

该函数尝试将模式与整个输入匹配。因此,您必须将
*
添加到正则表达式的开头(结尾的
\\Z
也是多余的),或者使用该方法


将大大加快,不管你做什么,把它放在一个方法中会更可读。

此外,Don可能会考虑在文件过滤器中包装他的正则表达式:谢谢发布答案!虽然一个代码片段可以回答这个问题,但添加一些附加信息仍然很好,比如解释等等。。
package regularexpression;

import java.io.File;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegularFile {
    public static void main(String[] args) {
        new RegularFile();
    }

    public RegularFile() {

        String fileName = null;
        boolean bName = false;
        int iCount = 0;
        File dir = new File("C:/regularfolder");
        File[] files = dir.listFiles();
        System.out.println("List Of Files ::");

        for (File f : files) {

            fileName = f.getName();
            System.out.println(fileName);

            Pattern uName = Pattern.compile(".*l.zip.*");
            Matcher mUname = uName.matcher(fileName);
            bName = mUname.matches();
            if (bName) {
                iCount++;

            }
        }
        System.out.println("File Count In Folder ::" + iCount);

    }
}
package regularexpression;

import java.io.File;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegularFile {
    public static void main(String[] args) {
        new RegularFile();
    }

    public RegularFile() {

        String fileName = null;
        boolean bName = false;
        int iCount = 0;
        File dir = new File("C:/regularfolder");
        File[] files = dir.listFiles();
        System.out.println("List Of Files ::");

        for (File f : files) {

            fileName = f.getName();
            System.out.println(fileName);

            Pattern uName = Pattern.compile(".*l.zip.*");
            Matcher mUname = uName.matcher(fileName);
            bName = mUname.matches();
            if (bName) {
                iCount++;

            }
        }
        System.out.println("File Count In Folder ::" + iCount);

    }
}