正則表示式基礎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);
}
}
演示結果