版權聲明:本文為部落客原創文章,轉載請注明出處。 https://blog.csdn.net/twilight_karl/article/details/53994857
Parrern類
沒有構造函數,使用一下方法建立對象:
Pattern compile(String regex) 将給定的正規表達式編譯到模式中。
Pattern compile(String regex, int flags) 将給定的正規表達式編譯到具有給定标志的模式中。
一些方法:
int flags() 傳回此模式的比對标志。
Matcher matcher(CharSequence input) 建立比對給定輸入與此模式的比對器。
matches(String regex, CharSequence input) 編譯給定正規表達式并嘗試将給定輸入與其比對。
pattern() 傳回在其中編譯過此模式的正規表達式。
String[] split(CharSequence input) 圍繞此模式的比對拆分給定輸入序列。
String[] split(CharSequence input, int limit) 圍繞此模式的比對拆分給定輸入序列。
String toString() 傳回此模式的字元串表示形式。
典型的調用順序是 :
Pattern p = Pattern.compile(“a*b”);
Matcher m = p.matcher(“aaaaab”);
boolean b = m.matches();
也可直接這樣調用,功能相同:
boolean b = Pattern.matches(“a*b”, “aaaaab”);
例:
//判斷是否滿足表達式
public class testMain2 {
public static void main(String[] args) {
String regex="a\\d{3}b";
String input="a111b";
//建立Pattern對象
Pattern p = Pattern.compile(regex);
//建立Matcher對象
Matcher matcher= p.matcher(input);
//使用Matcher中的方法
boolean flag = matcher.matches();
System.out.println(flag);
}
}
Matcher類
find() 該方法掃面輸入的序列查找與該模式比對的下一個子序列
group() 傳回找到的内容。group()group(0)表示比對整個表達式的子字元串
String group(int group) 傳回在以前比對操作期間由給定組捕獲的輸入子序列。
替換(不改變原字元串):
String replaceAll(String replacement) 替換模式與給定替換字元串相比對的輸入序列的每個子序列。
String replaceFirst(String replacement) 替換模式與給定替換字元串比對的輸入序列的第一個子序列。
分割:
split(String str) 按str分割(str可以為正規表達式)
(String類中的方法)
可循環使用find和group進而将所有滿足情況的子字元串輸出:
public class testMain2 {
public static void main(String[] args) {
String regex="a\\db";
String input="a1ba2ba3ba4ba5b";
Pattern p = Pattern.compile(regex);
Matcher matcher= p.matcher(input);
while(matcher.find()){
System.out.println(matcher.group());
}
}
}
結果:
a1b
a2b
a3b
a4b
a5b
可以使用split(String str)将字元串分割成字元數組,以str作為分隔符:
String [] s = input.split("\\d+");
for(String temp : s){
System.out.println(temp);
}
a
ba
b