我要做的是一个字符串是合法的文件,还是文件夹
例如:E:\2.7 Integrated+Test+Scenario(new test senario)-cn.xls是一个合法的文件我写的正则表达式:String strPatternWin = "(\\w:\\\\(([\\w][\\w|\\.|\\s]*[\\w])+\\\\)*([^\\\\]+))";后来改成:String strPatternWin = "(\\w:\\\\(([\\S][\\S|\\.|\\s]*[\\S])+\\\\)*([^\\\\]+))";但是不管如何,碰到上面那个文件就死掉错在哪里啊?
例如:E:\2.7 Integrated+Test+Scenario(new test senario)-cn.xls是一个合法的文件我写的正则表达式:String strPatternWin = "(\\w:\\\\(([\\w][\\w|\\.|\\s]*[\\w])+\\\\)*([^\\\\]+))";后来改成:String strPatternWin = "(\\w:\\\\(([\\S][\\S|\\.|\\s]*[\\S])+\\\\)*([^\\\\]+))";但是不管如何,碰到上面那个文件就死掉错在哪里啊?
解决方案 »
- 错误: 程序包java.awr不存在 怎么回事呢?
- 一段罕见的EJB调用报错AppSetRollbackOnlyException
- java sound求助
- Navigation Tabs
- eclipse Europa 与 eclipse_Ganymede 有什么区别
- 关于用批处理来启动jar文件,批处理中带有参数!!请知道的指点!
- 大家看看这个类怎么实例化
- Java Reader和Writer的用处
- 有看过JDK1.3源代码的人吗?
- JNI DLL 和SOCKET的问题!
- java 把TextField内容通过按钮事件储存到文本文件中
- java反射:怎么取出一个类import了什么,怎么取出某属性的javadoc?
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class ReplyBBs { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
ReplyBBs.method1();
}
public static void method1(){
Pattern p = Pattern.compile("[CDEFGHIJK]:(\\\\\\w+)*");
String s = "I'm singing while you're dancing D:\\csharpe";
Matcher m = p.matcher(s);
while (m.find()) {
p(m.group());
p(m.start() + "---" + m.end());
}
}
public static void p(Object o) {
System.out.println(o);
}}自己写的 你看看 好不好使
String input = "E:\\2.7 Integrated+Test+Scenario(new test senario)-cn.xls";
// ^[A-Z]:\\(?:[^\\/:*?"<>|]+\\)*[^\\/:*?"<>|]*$
Pattern p = Pattern.compile("^[A-Z]:\\\\(?:[^\\\\/:*?\"<>|]+\\\\)*[^\\\\/:*?\"<>|]*$", Pattern.CASE_INSENSITIVE);
boolean result = p.matcher(input).matches();
System.out.println(result);
}}
只是匹配文件名
是根据windows命名规则来的吧。C:\test \yinglish.txt
应该不匹配(注意空格)你的也匹配了
在sagezk的基础上改的。
看看还有错没
可以,看看 Eclipse 的那几个配置文件。
import java.util.regex.Pattern;public class RegexTest { public static void main(String[] args) {
String input = "E:\\2.7 Integrated+Test+Scenario(new test senario)-cn.xls";
// ^[A-Z]:(?:\\(?!\s)[^\\/:*?"<>|]+(?<!\s))*\\?$
Pattern p = Pattern.compile("^[A-Z]:(?:\\\\(?!\\s)[^\\\\/:*?\"<>|]+(?<!\\s))*\\\\?$", Pattern.CASE_INSENSITIVE);
boolean result = p.matcher(input).matches();
System.out.println(result);
}}