1. 程式人生 > >正則表示式基礎1

正則表示式基礎1

註釋:正則表示式的學習記錄1

1.正則表示式

1.1定義

正則表示式是具有特殊含義的字串,用來定義匹配規則,在Pattern類中有簡單的規則定義。可以結合字串類的方法使用。

1.2功能

正則表示式可用於限制賬號密碼的長度,用於匹配符合規則的字串,用來檢索、替換那些符合某個規則的文字等。

2.語法及例項

2.1 匹配規則

所謂正則表示式的匹配規則,就是對應匹配的字元產生相應的效果。

語法規則:

字元

1.當正則表示式的匹配規則為字元“x”,則要匹配的字串內容就是“x”。
2.當正則表示式的匹配規則為“\”,則要匹配的字串內容就是反斜線字元“\”;。
3.當正則表示式的匹配規則為“\t”,則對應的效果就是產生一個製表符的空間。
4.當正則表示式的匹配規則為“\n”,則對應的效果就是換行,游標在原有位置的下一行。
5.當正則表示式的匹配規則為“\r”,則對應的效果就是回車後的效果,游標來到下一行行首。

字元類

6.當正則表示式的匹配規則為字元類:[abc]
含義:代表的是字元a、b 或 c
則要匹配的內容就是字元a,或者字元b,或字元c的一個。
7.當正則表示式的匹配規則為字元類:[^abc]
含義:代表的是除了字元a、b 或 c以外的任何字元 則要匹配的內容就是不是字元a,或者不是字元b,或不是字元c的一個。
8.當正則表示式的匹配規則為字元類:[a-zA-Z] 
含義:a到 z 或 A到 Z,兩頭的字母包括在內(範圍) 
則要匹配的是一個大寫或者小寫字母。
9.當正則表示式的匹配規則為字元類:[0-9] 
含義:0到9的字元都包括(範圍)
則要匹配的是一個數字。 

10.當正則表示式的匹配規則為字元類:[a-zA-Z_0-9] 含義:代表的字母或者數字或者下劃線(即單詞字元)

預定義字元類

11.當正則表示式的匹配規則為“.”,則表示匹配任何字元。
12.當正則表示式的匹配規則為“\d”,則表示匹配數字0到9,相當於[0-9]。
13.當正則表示式的匹配規則為“\w”,則表示匹配字母或數字或者下劃線,相當於[a-zA-Z_0-9]。

邊界匹配器

14.當正則表示式的匹配規則為“^”,則代表行的開頭,匹配從“^”後面的內容開始。
15.當正則表示式的匹配規則為“$”,則代表行的結尾,匹配以“$”前面的內容結束。
16.當正則表示式的匹配規則為“\b”,則代表單詞邊界。

數量詞

17.當正則表示式的匹配規則為“x?”,則代表“x”出現一次或者一次都沒出現。
18.當正則表示式的匹配規則為“x*”,則代表“x”出現零次或者出現多次。
19.當正則表示式的匹配規則為“x+”,則代表“x”出現一次或者出現多次。
20.當正則表示式的匹配規則為“x{n}”,則代表“x”恰好出現n次。
21.當正則表示式的匹配規則為“x{n,}”,則代表“x”至少出現n次。
22.當正則表示式的匹配規則為“x{n,m}”,則代表“x”至少出現n次,但不超過m次。

2.2 java中字串類涉及的常見正則表示式

boolean:   matches(String regex),返回boolean型別值告知此字串是否匹配給定的正則表示式。  
String[]:   split(String regex),根據給定正則表示式的匹配拆分此字串。  
String:    replaceALL(String regex,String replacement),使用給定的replacement替換此字串所有匹配給定的正則表示式的子字串。  

例項小試

例1:校驗qq號碼

1: 要求qq號必須是5-15位數字
2: qq號不能以0開頭
程式碼演示:
import java.util.*;
public class RegexDemo {
    public static void main(String[] args) {
        checkQQ();
    }
    /*
     * 本函式用於檢查QQ號碼是否合法,具體實現:
     * 1.不能以0開頭;2.必須是純數字;3.長度在5到15之間
     */
    public static void checkQQ(){
        Scanner input = new Scanner(System.in);
        System.out.println("請輸入QQ號:");
        String QQ = input.next();
        String regex = "[1-9][0-9]{4,14}";
        //檢查QQ號碼和規則是否匹配,String類的方法matches
        boolean b = QQ.matches(regex);
        //當輸出的布林型為true時,表示所輸入的QQ號正確,反之 輸入錯誤
        System.out.println(b);
    }
}

演示結果