java正则表达式

  1.         String regex = "<a>(.*?)</a>";              // 非贪婪模式  
  2.         String regex = "<a>(.*)</a>";               // 贪婪模式 

  appendReplacement(StringBuffer sb, String replacement) 将当前匹配子串替换为指
定字符串,并且将替换后的子串以及其之前到上次匹配子串之后的字符串段添加到一个
StringBuffer对象里,而appendTail(StringBuffer sb) 方法则将最后一次匹配工作后
剩余的字符串添加到一个StringBuffer对象里

  "abc".matches("...");
        "a8729a".replaceAll("//d", "-");两个反斜杠代表正则表达式,一个反斜杠代表反义
        Pattern p = Pattern.compile("[a-z]{3}");a到z的三个字符
        Matcher m = p.matcher("fgh");
        boolean b = m.matches());
        b = "fgha".matches("[a-z]{3}");

          //初步认识. * + ?
.代表一个字符,*代表0个或者多个,+代表一个或者多个,?代表0个或者1个
[0-9]代表代表数字0到9.//d{1,3}数字出现1到3次
&&代表交集 |代表或者
        /*
        p("a".matches("."));
        p("aa".matches("aa"));
        p("aaaa".matches("a*"));
        p("aaaa".matches("a+"));
        p("".matches("a*"));
        p("aaaa".matches("a?"));
        p("".matches("a?"));
        p("a".matches("a?"));
        p("214523145234532".matches("//d{3,100}"));
        p("192.168.0.aaa".matches("//d{1,3}//.//d{1,3}//.//d{1,3}//.//d{1,3}"));
        p("192".matches("[0-2][0-9][0-9]"));
       
         //范围
        /*
        p("a".matches("[abc]"));[abc]代表从abc之中任意一个
        p("a".matches("[^abc]"));[^abc]abc之外的字符
        p("A".matches("[a-zA-Z]"));a到z或者A到Z
        p("A".matches("[a-z]|[A-Z]"));同上
        p("A".matches("[a-z[A-Z]]"));同上
        p("R".matches("[A-Z&&[RFG]]"));A到Z并且是RFG中的任意字符
/t 间隔 ('/u0009')
/n 换行 ('/u000A')
/r 回车 ('/u000D')
/d 数字 等价于[0-9]
/D 非数字 等价于[^0-9]
/s 空白符号 [/t/n/x0B/f/r]
/S 非空白符号 [^/t/n/x0B/f/r]
/w 单独字符 [a-zA-Z_0-9]
/W 非单独字符 [^a-zA-Z_0-9]
        p(" /n/r/t".matches("//s{4}"));
        p(" ".matches("//S"));
        p("a_8".matches("//w{3}"));
        p("abc888&^%".matches("[a-z]{1,3}//d+[&^#%]+"));
        p("//".matches("////"));

 //b单词边界
       $为限制结尾
       ^放在[]外面的意思代表开头
        p("hello sir".matches("^h.*"));
        p("hello sir".matches(".*ir$"));
        p("hello sir".matches("^h[a-z]{1,3}o//b.*"));
        p("hellosir".matches("^h[a-z]{1,3}o//b.*"));
        //whilte lines
        p(" /n".matches("^[//s&&[^//n]]*//n$"));

        //email
        //p("[email protected]".matches("[//w[.-]]+@[//w[.-]]+//.[//w]+"));

        //matches find lookingAt
        /match匹配整串,find寻找子串,lookingAt从头找
        Pattern p = Pattern.compile("//d{3,5}");
        String s = "123-34345-234-00";
        Matcher m = p.matcher(s);
        p(m.matches());
        m.reset();
        p(m.find());
        p(m.start() + "-" + m.end());
        p(m.find());
        p(m.start() + "-" + m.end());
        p(m.find());
        p(m.start() + "-" + m.end());
        p(m.find());
        //p(m.start() + "-" + m.end());
        p(m.lookingAt());
        p(m.lookingAt());
        p(m.lookingAt());
        p(m.lookingAt());

        //replacement
        /*
        Pattern p = Pattern.compile("java", Pattern.CASE_INSENSITIVE);
        Matcher m = p.matcher("java Java JAVa JaVa IloveJAVA you hateJava afasdfasdf");
        //String str  = m.replaceAll("JAVA");
        StringBuffer buf = new StringBuffer();
        int i=0;
        while(m.find()) {
            i++;
            if(i%2 == 0) {
                m.appendReplacement(buf, "java");
            } else {
                m.appendReplacement(buf, "JAVA");
            }
        }
        m.appendTail(buf);
        p(buf);


        //group
        有几个()就有几组
        Pattern p = Pattern.compile("(//d{3,5})([a-z]{2})");
        String s = "123aa-34345bb-234cc-00";
        Matcher m = p.matcher(s);
        while(m.find()) {
            p(m.group(1));
        }


        //qulifiers
        +
        Pattern p = Pattern.compile(".{3,10}+[0-9]");
        String s = "aaaa5bbbb68";
        Matcher m = p.matcher(s);
        if(m.find())
            p(m.start() + "-" + m.end());
        else
            p("not match!");
        */

你可能感兴趣的:(java正则表达式)