日期:2014-05-20  浏览次数:20706 次

一个小问题关于正则表达式的,知道的兄弟帮帮忙看看
debug到这段,匹配不对,前面尝试调试,发现是制表符的问题,但是很奇怪,同样有制表符的某些语句可以匹配。这个方法输出结果为:
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class TestCodeCount {
private static int countSpace=0;
private static int countCode=0;
private static int countVisi=0;
private static int countMethod=0;
public static void main(String[] args) {
private static void countCodeSivi(String line) {
private static void countCodeMethod(String line) {
private static void countCodeSpace(String line) {
private boolean b=false;

执行的方法体:
private static void countCodeMethod(String line) {
Pattern p=Pattern.compile("[\\s*\\w]\\w+.*"); 
Matcher m=p.matcher(line);
if(m.matches()) {
System.out.println(line);
countMethod++;
}




\tprivate static int countSpace=0;  //这个有匹配
\t\ttry {                           //这个无法匹配 很奇怪。   
正则表达式 匹配?

------解决方案--------------------
这是因为正则中[]中间的都是匹配任意单个字符并且[]中的是(除-代表到哪个为止)其它字符是会自动转义的。
也就是说在[]中+不会代表至少一次或多次*不会代表0次或多次 
你这个正则其实匹配的是任意的空白字符或者*或者字母数字下划线"*try{".matches("[\\s*\\w]\\w+.*");也是true