Java總結-正則表達式
正則表達式:
專門用于操作字符串的規則。
將一些操作代碼通過一些符號體現。
好處:
1,方便了程序的編寫。
2,可以用于對字符串的復雜操作。
弊端:
閱讀性較差。
常用規則:
[]:限定某一位字符內容范圍。
比如: [abc]:該位字符只能出現a或者b或者c。
[a-z]:改為字符只要是小寫字母中的一個即可。
{}:限定前一個字符或者正則規則內容出現的次數。
比如: {3}:出現3次。
{3,}:至少出現3次。
{3,7}:出現3到7次。
數量規則:
?:出現一次或者0次。
:出現了0次或者多次。
+ :出現1次或者多次。
字符規則:
\d: [0-9],數字。
\D: [^0-9],非數字。
\w: [a-zA-Z0-9_]
\b: 單詞邊界。
\s: 空格,tab,\r \n.
組規則:
可以將正則表達式的結果通過()進行封裝,以便于該規則內容被重用
技巧:當出現了嵌套組的時候,通過左括號來進行編號的判斷。該編號從1開始。
如果使用已定好的組呢?
通過\n形式,反向引用組。()\1+。
特殊:
$ : 代表是行結束。
^ : 行開始。
. : 代表任意字符。
--------
對字符串操作的常見功能。
1,匹配。String matches(regex);其實最終使用的是Matcher匹配器對象。
需求:判斷QQ號碼。5~15 0不可以開頭。
qq.matches("[1-9]\d{4,14}");
2,切割:String split(regex);
需求:如果想通過 . 的形式起個字符串。
split("\.");
3,替換:String replaceAll(regex,str);
在regex表達式中使用了組。那么可以在str中的通過 $編號 的形式獲取regex中的組。
需求:如果想將符合規則的內容替換成一個$符號。
replaceAll(regex,"\$");
需求:替換疊詞,用疊詞中的一個替換全部。
s.replaceAll("(.)\1+","$1");
4,查找:涉及到java.util.regex包中兩個對象。Pattern ,Matcher。
1,將正則規則封裝成Pattern對象。Pattern p = Pattern.compile(regex);
2,將規則對象和要作用的字符串相關聯,獲取匹配器對象。Matcher m = p.matcher(str);
3,通過匹配器對象find()將規則去操作字符串,如果找到返回true。
在通過group()方法獲取找到符合規則的內容。
練習:
1,獲取一段英文有三個字母組成的單詞。
2,操作一組ip地址,按ip地址順序排序。
3,Email規則。/[a-zA-Z0-9_]*/ "\w{6,12}@[a-zA-Z0-9]+(\.[a-zA-Z]+)+"
4,網頁爬蟲。
遍歷網頁中的文本,將符合規則的信息獲取。
應用場景:
注冊表單的校驗。