java正則表達式學習筆記

/**
regular expression 正則表達式:用來匹配字符串的模板,簡單的講,任意字符串,包括諸如"abc"這樣的字符串常量都是正則表達式
只是"abc"這樣的正則表達式只能匹配它本身,實際中沒有什麼意義.可以將正則表達式看成包含特殊字符的字符串

正則表達式中的特殊字符(具有特殊含義的字符):
():標記子表達式的開始和結束.
*:表示前面的子表達式可以出現零次或多次.
+:表示前面的子表達式可以出現一次或多次.
?:表示前面的子表達式可以出現零次或一次.
.:可以匹配除換行符\n之外的任何單個字符
\:轉義字符
|:表示選項之間任選一項


正則表達式中的通配符:
.:可以匹配除換行符\n之外的任何單個字符
\d:匹配0~9所有數字
\D:匹配非數字
\s:匹配所有空白字符
\S:匹配非空白字符
\w:匹配所有單詞字符,包括0~9數字,26個英文字符,下劃線
\W:匹配所有非單詞字符


方括號表達式的作用:
表示枚舉:例如:[abc]表示a,b,c其中任意一個字符
表示範圍:例如:[a-f]表示a~f範圍內的任意一個字符,[\u0061-\u007f]表示unicode編碼爲0061~007f之間的字符
表示求否:例如[^abc]
表示與運算&&:例如:[a-z && ^bc]表示a~z範圍內除b,c以外的字符.


圓括號表達式用來將多個表達式組成一個子表達式,圓括號中可以使用或運算符(|)例如:(private|protected|public)正則表達式式用來匹配
java三個訪問權限控制符之一


數量標識符
X*:表示X表達式出現零次或多次.
X+:表示X表達式出現一次或多次.
X?:表示X表達式出現零次或一次.
X{n}:表示X表達式出現n次
X{n,}:表示X表達式至少出現n次
X{n,m}:表示X表達式至少出現n次,至多出現m次

*/


測試代碼


import java.util.regex.*;
import java.util.*;

public class PatternTest
{
    public static void main(String[] args)
    {
        
        /**驗證字符串常量也是正則表達式,該正則表達式僅能匹配它自身*/
        System.out.println("1: " + "china".matches("china"));/*可以看到打印爲true.由此可看出字符串常量也是正則表達式。*/
        
        /** \uffff表示unicode編碼爲16進制ffff的字符,比如'\u0061'表示字符'a' */
        System.out.println("2: " + "\u0061");
        
        
        /**驗證方括號表達式的作用*/
        System.out.println("3: " + "z".matches("[a-c,h-i]"));/*輸出爲false*/
        System.out.println("3: " + "a".matches("[a,b,c]"));/*輸出爲true*/
        System.out.println("3: " + "a".matches("[^abc]"));/*輸出爲false*/
        
        System.out.println("4: " + "35a".matches("\\d\\d."));/*輸出爲true \\d\\d.匹配第一第二個字符爲數字第三個爲任意字符的字符串*/
        
        
        System.out.println("5: " + "hello world!".replaceFirst("\\w*","#" ));
        System.out.println("5: " + "hello world!".replaceFirst("\\w*?","#" ));
        
        System.out.println("8: " + "@美人:私聊吧".matches("@[^:]+:.+" ));
        
        System.out.println("9: " + "@美女:私聊".split("[:|:]")[0]);
        
        System.out.println("9: " + "@美女:私聊".split("[:|:]")[0]);
        
        /**將正則表達式編譯成模板pattern*/
        //String regex = "[a-z_]\\w*"; /*定義一個正則表達式式用來判斷標識符是否合法 假設標識符命名規則如下:1以小寫字符或下劃線開頭,只能採用數字,26個英文字符,和下劃線*/
        String regex = "\\w+";
        Pattern pattern = Pattern.compile(regex);
        
        Matcher match = pattern.matcher("java is very easy");
        System.out.println("6:  "+ match.matches());
    
        int i = 0;
        while(match.find(i))
        {
            System.out.println(match.group());
            i = match.end();
        }
        
        Pattern pattern2 = Pattern.compile(" +");
        String[] strs = pattern2.split("java is   very  easy", 4);
        for(String s : strs)
        {
            System.out.println(s);
        }

        
        
    }
    
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章