正则表达式剖析
package com.wjy.pattern;import java.io.PrintWriter;public class Pattern1 {public static void main(String args[]) {PrintWriter out=new PrintWriter(System.out,true);out.println("-1234".matches("(-|\\+)?\\d*"));}}
?matches函数中的就是大名鼎鼎的正则表达式。
? ? ? ? ? ? ? ? ? ?\\W ? ?: ? ?非词字符(相当于:^\w)
? ? ? ? ? ? ? ? ? ?\\w ? ? : ? ?词字符(a-zA-Z0-9)
? ? ? ? ? ? ? ? ? ?\\D ? ? : ? ?非数字
? ? ? ? ? ? ? ? ? ?\\d ? ? : ? ?数字
??? ? ? ? ? ? ? ? ?\\S ? ? : ? ?非空白符(相当于: ^\s)
? ? ? ? ? ? ? ? ? ?\\s ? ? : ? ? 空白符(空格,回车,换行,换页,tab)
? ? ? ? ? ? ? ? ? ?? ? ? ?: ? ? ?一个或零个
? ? ? ? ? ? ? ? ? ?* ? ? ?: ? ? ?零个或多个
? ? ? ? ? ? ? ? ? ?+ ? ? ?: ? ? ?一个或多个
? ? ? ? ? ? ? ? ? ?{n} ? ? : ? ? ?恰好n个
?? ? ? ? ? ? ? ? ?{n,} ? ? : ? ? ?至少n个
?? ? ? ? ? ? ? ? ?{n,m} ? ? : ? ? ?至少n个,不超过m个
看一个将指定目录下满足文件名要求的文件列出来的例子,这里用到了Pattern和Matcher:
File pathFile=new File("./src/com/wjy/multithread/");String[] listStrings=pathFile.list(new DirFilter("M\\w+.?\\w+"));Arrays.sort(listStrings, String.CASE_INSENSITIVE_ORDER);for (String string : listStrings) {System.out.println(string);}
?而关键的类在下面:
package com.wjy.multithread;import java.io.File;import java.io.FilenameFilter;import java.util.regex.Pattern;public class DirFilter implements FilenameFilter{private final Pattern pattern;public DirFilter(String regex){pattern=Pattern.compile(regex);}@Overridepublic boolean accept(File dir, String name) {// TODO Auto-generated method stubreturn pattern.matcher(name).matches();}}
?