有人帮我看一下吗,这个正则匹配为什么输出false啊

来源:百度知道 编辑:UC知道 时间:2024/06/22 03:18:14
String regExp = ".+\\\\(.+)$";
Pattern p = Pattern.compile(regExp);
String name = "Lighthouse.jpg";
Matcher m = p.matcher(name);
boolean result = m.find();
System.out.println(result);
希望有人再回答我下面的问题,我知道出错在哪里了,是上传文件名字的问题,我通过Apache的上传组件上传的一个文件,lighthouse.jpg,我以为通过FileItem得到的文件名是d:\\images\\lighthouse.jpg,一直都是匹配错误,刚才才发现,原来通过String name = item.getName();得到是是lighthouse.jpg,我想知道为什么,我以前都是得到的全路径名啊?

你需要的是一个文件名跟着一个. 然后是扩展名吗? 那这么写试试:
String regExp = "^(.+)\\.(.+)$";
Pattern p = Pattern.compile(regExp);
String name = "Lighthouse.jpg";
Matcher m = p.matcher(name);
boolean result = m.find();
System.out.println(result);

这个不太了解, 因为我用上传只需要得到名字, 至于文件的路径对于服务器中没有太大的意义, 毕竟你的服务器不可能只是针对本机使用, 发布出去, 任何地方都可能使用, 那么对于别人的机器上传上来的文件, 绝对路径就没有任何意义了. 而且存在于服务器的文件外界才能访问, 服务器所在机器的硬盘也是外界访问不到的.

不符合,当然是false
要取后缀名这么写 String regExp = ".+\\.(.+)$";

因为Apache的上传组件升级了,或者你用的另外一个方法