正則表達式
大家都知道,我們在java程序的學習和開發中,會遇到需要匹配、查找、替換、判斷字符串的情況發生,而這些情況有時又比較複雜,如果用純編碼方式解決,往往會浪費程序員的時間及精力。因此,學習及使用正則表達式,便成了解決這一矛盾的主要手段。
一、.定義:
正則表達式是一種可以用於模式匹配和替換的規範,一個正則表達式就是由普通的字符(例如字符a到z)以及特殊字符(元字符)組成的文字模式,它用以描述在查找文字主體時待匹配的一個或多個字符串。
二、用途:
常見數據處理操作:
匹配 ----- 驗證郵箱 手機號 QQ號;
替換 ----- 將私人信息隱藏;
分割 ----- name=XXX&sex=XXX&age=XXX;
查找 ----- 網頁中的超鏈接,郵箱;
操作實現:
1、編寫代碼,使用代碼實現:
A、代碼編寫量大 B、代碼通用性差
2、正則表達式:
優點:通用性強;
缺陷:效率低;
三、方法概略
匹配
Pattern ----- public static boolean matches(String regex,CharSequence input);//編譯給定正則表達式並嘗試將給定輸入與其匹配。
Matcher ----- public boolean matches();//嘗試將整個區域與模式匹配。
替換
Matcher ----- public String replaceAll(String replacement);//替換模式與給定替換字符串相匹配的輸入序列的每個子序列
分割
Pattern ----- public String[] split(CharSequence input);//圍繞此模式的匹配拆分給定輸入序列。
查找:字符串沒有封裝
Matcher ----- public boolean find();//嘗試查找與該模式匹配的輸入序列的下一個子序列。
Matcher ----- public String group();//返回由以前匹配操作所匹配的輸入子序列。
Ps: JDK提供的正則表達式的使用(以匹配爲例):
特點:比較繁瑣
建議:使用String提供的封裝實現
簡化使用步驟,String的源碼實現,仍然是JDK的Pattern
四、java中處理正則表達式的類:
java.lang.String
java.util.regex.Pattern:模式類:字符串要被匹配的這麼一個模式,該模式本身已經被編譯過,使用的話效率要高很多。
java.util.regex.Matcher:匹配類:這個模式匹配某個字符串所產生的結果,這個結果可能會有很多個。
五、例子:
學習正則表達式的最好方法是從例子開始,理解例子之後再自己對例子進行修改,實驗。下面給出了簡單的例子,並對它們作了詳細的說明。
package net.itcast.a.re;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* 正則表達式的使用:
* 驗證QQ號爲例:
*
* 使用方式1:
* 1、編寫正則表達式
* 2、將正則表達式構建成java對象
* 3、和一個數據構建生成匹配器
* 4、指向操作:
* 判斷是不是合法
*
* 使用要素:
* 1、要驗證的數據
* 2、匹配模式
* 3、調用Java封裝好的API
*
*/
public class RE00 {
public static void main(String[] args) {
//1、編寫正則表達式
String qqRE = "[1-9][0-9]{4,14}";
//2、調用API
Pattern p = Pattern.compile(qqRE); //編譯正則表達式
Matcher m = p.matcher("a595306686"); //比較和匹配
//結果
boolean b = m.matches(); //調用方法,打印結果
System.out.println(b);
}
}