1. 程式人生 > >Java中的正則表示式以及例項

Java中的正則表示式以及例項

1、 字元
 a) x字元x。如‘a’代表字元a
 b) \ \反斜線字元用\\代表一個\
 c) \n換行符(‘\u000A’)
 d) \r回車符(‘\u000D’)
2、 字元類
 a) [abc] a、b或c(簡單類)
 b) [^abc]除了a、b、c的任何字元
 c) [a-zA-Z]a到z或A到Z,兩頭字母包括在內
 d) [0-9] 0到9的字元都包括
  i. qq.matches([1-9][0-9]{4,14})代表的是第一位是取1到9,後面緊跟的至少4位最多14位取值是0到9,最終資料是5-15位
 ii. 也可以寫作qq.matches([1-9]{1}[0-9]{4,14})
3、 預定義字元類


 a) . 表示任何字元。如果想表示 . 可以用 \. 來表示
 b) \d表示數字[0-9] 這裡需要注意的是此處的\需要用\\來代替。
 c) \w單詞字元:[a-zA-Z_0-9]
  i. 在正則表示式裡面組成單詞的東西必須由這些東西組成
4、 邊界匹配器
 a) ^行的開頭
 b) $行的結尾
 c) \b單詞邊界:只要不是單詞字元就都是單詞邊界
5、 數量詞
 a) X? X一次或一次也沒有
 b) X* X零次或多次
 c) X+ X一次或多次
 d) X{n} X恰好n次
 e) X{n,} X至少n次
 f) X{n,m} X至少n次,但不超過m次
6、 正則表示式的應用
 a) public boolean matches(String regex)判斷功能
  i. 位於String類中告知此字串是否匹配給定的正則表示式
 b) public String [] split (String regex)分割功能
  i. String類,根據正則表示式來匹配拆分字串。
  ii. 18-24如果想進行拆分兩個數字18和24
  iii. String s=”18-24”
  iv. String regex=”-”
  v. String []array=s.split(regex)
  vi. a=Integer.parseInt(array[0]) //18
  vii. b=Integer.parseInt(array[1])//24
 c) public String replaceAll(String regex,String replacement)替換功能
  i. Stirng類
  ii. String s=”hel123lowo456rld”;//去除字串中的數字,變為*
  iii. String regex=”\d+”;
  iv. String ss=” * ”
  v. String result =s.replaceAll(regex,ss);//輸出結果為hel* lowo* rld
  vi. 如果想把字串中每個數字都變為* 則需要修改String regex=”\d+”;將其修改為String regex=”\d”。
 d) 獲取功能需要使用Pattern和Matcher類(在下面例項中給出程式碼)
  i. 也可用於判斷功能(但是不如上面的a方法進行判斷簡單)
  ii. Pattern p=pattern.compile(“a*b”)//將正則表示式編譯成模式物件,a出現零次或多次,b出現一次。
  iii. Matcher m=p.matcher(“aaaab”)//通過模式物件得到匹配物件aaaab為匹配字串
  iv. boolean b=m.matches()//b輸出結果為true

正則表示式的獲取功能例項

package test08_zhengdingbiaodashi;

import java.util.regex.Matcher;
import java.util.regex.Pattern;
//功能實現獲取字串s中的長度為5的獨立字元
public class Research {
	public static void main(String[] args) {
		//字串
		String s="hello world zfliu 1996 20181025 ";
		//正定表示式規則,因為是獨立字串此處必須要加上字元\\d以獲取字元邊界
		String regex=
"\\b\\w{5}\\b"; //把規則編譯成模式物件 Pattern p=Pattern.compile(regex); //通過模式物件得到匹配器物件 Matcher m=p.matcher(s); //呼叫匹配器功能 //建立匹配物件後可以進行三個不同的操作,每個操作都會返回以一個boolean值 //1、public boolean matches()方法嘗試將整個輸入序列與該模式匹配 //2、public boolean lookingAt()嘗試將輸入序列從頭開始與該模式匹配,只從頭開始進行一次成功匹配 //3、public boolean find()方法掃描輸入序列以查詢與該模式匹配的下一個子序列,從頭開始可以進行多次成功匹配 //注意每次必須呼叫find方法之後再呼叫group方法得到匹配的字元 ///public String group(); while(m.find()) { String s1=m.group(); System.out.println(s1); } } }