1.看个小例子先:
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);
}
@Override
public boolean accept(File dir, String name) {
// TODO Auto-generated method stub
return pattern.matcher(name).matches();
}
}