正則表示式(Pattern和Matcher類)
正則表示式:
概念:正確規則的表示式 規則java給我們定的,是指一個用來描述或者匹配一系列符合某個句法規則的字串的單個字串。其實就是一種規則。有自己特殊的應用。
正則表示式的組成規則
規則字元在java.util.regex Pattern類中
A:字元
x 字元 x。舉例:‘a’表示字元a
\ 反斜線字元。
\n 新行(換行)符 (’\u000A’)
\r 回車符 (’\u000D’)
B:字元類
[abc] a、b 或 c(簡單類)
[^abc] 任何字元,除了 a、b 或 c(否定)
[a-zA-Z] a到 z 或 A到 Z,兩頭的字母包括在內(範圍)
[0-9] 0到9的字元都包括
C:預定義字元類
. 任何字元。我的就是.字元本身,怎麼表示呢? .
\d 數字:[0-9]
\w 單詞字元:[a-zA-Z_0-9]
在正則表示式裡面組成單詞的東西必須有這些東西組成
D:邊界匹配器
^ 行的開頭
$ 行的結尾
\b 單詞邊界
就是不是單詞字元的地方。
舉例:hello world?haha;xixi
E:Greedy 數量詞
X? X,一次或一次也沒有 比如""空串 就是沒有
X* X,零次或多次 大於等於1次 都算多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超過 m 次
正則表示式的功能
A:正則表示式的判斷功能
String類的功能:public boolean matches(String regex)
B:正則表示式的分割功能 split()方法
String類的功能:public String[] split(String regex)
C:把給定字串中的數字排序
舉例分析:
有一個字串:”91 27 46 38 50”,編寫程式碼實現最終輸出結果是:”27 38 46 50 91”
-
a: 定義目標字串"91 27 46 38 50"
-
b: 對這個字串進行切割,得到的就是一個字串陣列
-
c: 把b中的字串陣列轉換成int型別的陣列
-
(1): 定義一個int型別的陣列,陣列的長度就是字串陣列長度
-
(2): 遍歷字串陣列,獲取每一個元素.將其轉換成int型別的資料
-
(3): 把int型別的資料新增到int型別的陣列的指定位置
-
d: 排序
-
e: 建立一個StringBuilder物件,用來記錄拼接的結果
-
f: 遍歷int型別的陣列, 將其每一個元素新增到StringBuilder物件中
-
g: 就是把StringBuilder轉換成String
-
h: 輸出
D:正則表示式的替換功能
String類的功能:public String replaceAll(String regex,String replacement)
E:正則表示式的獲取功能
Pattern和Matcher的結合使用,使用的是 find()方法 和 group()方法 注意一定要先使用find()方法先找到 才能用group()方法獲取出來
舉例:
獲取下面這個字串中由三個字元組成的單詞
正則表示式 \\b[a-z]{3}\\b da jia ting wo shuo,jin tian yao xia yu,bu shang wan zi xi,gao xing bu
Pattern和Matcher
(正則的獲取功能需要使用的類)
Pattern->模式器
Matcher->匹配器
使用方法,舉例如下
Pattern p = Pattern.compile("a*b");
Matcher m = p.matcher("aaaaab");
boolean b = m.matches();