NO IMAGE

Pattern類的主要作用是進行正則規範的編寫,而Matcher類主要是執行規範,驗證一個字串是否符合其規範。下面來通過具體例子瞭解一下:

import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexDemo {
public static void main(String[] args) {
String string = "1983-07-27";
String patString = "\\d{4}-\\d{2}\\d{2}";
Pattern pattern = Pattern.compile(patString);
Matcher matcher = pattern.matcher(string);
if (matcher.matches()) {
System.out.println("日期格式合法!");
} else {
System.out.println("日期格式不合法!");
}
}
}

當然也可以通過使用Pattern類,對一個字串進行拆分工作,這個在一般的機試中經常會考到:

import java.util.regex.Pattern;
public class RegexDemo01 {
public static void main(String[] args) {
String string = "A1B22C333D4444E55555F";
String patString = "\\d ";//定義拆分規則,因為字串中數字個數不一樣,所以這裡用到\d 表示1位或者多位數字都可以。
Pattern pattern = Pattern.compile(patString);//例項化Pattern類
String[] strings=pattern.split(string);
for (int i = 0; i < strings.length; i  ) {
System.out.print(strings[i] "\t");
}
}
}

執行如下:A B C D E F 

 

瞭解了匹配和拆分工作,下面看一下Matcher類的替換操作:

import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexDemo01 {
public static void main(String[] args) {
String string = "A1B22C333D4444E55555F";
String patString = "\\d ";// 定義拆分規則
Pattern pattern = Pattern.compile(patString);// 例項化Pattern類
Matcher matcher = pattern.matcher(string);
String newString = matcher.replaceAll("_");
System.out.println(newString);
}
}

執行例項:A_B_C_D_E_F

 

其實String類也對正規表示式有支援,String類中有三個方法支援正則操作:

1.public boolean matches(String regex)     字串匹配;

2.public String replaceAll(String regex,String replacement)    字串替換;

3.public String[] split(String regex)      字串拆分;

下面通過一個例子來看一看怎麼用:

public class RegexDemo01 {
public static void main(String[] args) {
String string1 = "A1B22C333D4444E55555F".replaceAll("\\d ", "--");
boolean temp = "1983-01-01".matches("\\d{4}-\\d{2}-\\d{2}");
String[] strings = "A1B22C333D4444E55555F".split("\\d ");
System.out.println(string1);
System.out.println(temp);
for (String string : strings) {
System.out.print(string   "\t");
}
}
}

執行例項:

A–B–C–D–E–F
true
A B C D E F 

可以發現以上程式執行結果和以前是一樣的,所以在此建議讀者以後最好直接在String類中的方法,這樣比較方便。

喜歡的童鞋可以關注我