当前位置:  开发笔记 > 编程语言 > 正文

Java文件扩展名正则表达式

如何解决《Java文件扩展名正则表达式》经验,为你挑选了2个好方法。

我正在尝试提出一个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 true false false",但是它会打印出所有4种情况的假.我哪里错了?

干杯,唐



1> Adam Rosenfi..:

所述Matcher.matches()函数尝试匹配针对整个输入的模式.因此,您必须添加.*到正则表达式的开头(并且\\Z最后也是多余的),或使用find()方法.



2> Bill K..:
public boolean isFilename(String filename) {
    int i=filename.lastInstanceOf(".");
    return(i != -1 && i != filename.length - 1)
}

会更快,无论你做什么,把它放在一个方法将更具可读性.

推荐阅读
mobiledu2402851323
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有