1. 程式人生 > >Java學習日誌14.09(第一階段基礎)

Java學習日誌14.09(第一階段基礎)

2018.10.24 晴

14.09_常見物件(Pattern和Matcher的概述)

java.util.regex.Pattern

Pattern
正則表示式的編譯表示形式。

指定為字串的正則表示式必須首先被編譯為此類的例項。然後,可將得到的模式用於建立 Matcher 物件,依照正則表示式,該物件可以與任意字元序列匹配。執行匹配所涉及的所有狀態都駐留在匹配器中,所以多個匹配器可以共享同一模式。

因此,典型的呼叫順序是

Pattern p = Pattern.compile(“a*b”); // 獲取正則表示式
Matcher m = p.matcher(“aaaaab”); //獲取匹配器
boolean b = m.matches(); // 將字串與正則表示式進行匹配

在僅使用一次正則表示式時,可以方便地通過此類定義 matches 方法。此方法編譯表示式並在單個呼叫中將輸入序列與其匹配。語句

boolean b = Pattern.matches(“a*b”, “aaaaab”);
等效於上面的三個語句,儘管對於重複的匹配而言它效率不高,因為它不允許重用已編譯的模式。
此類的例項是不可變的,可供多個併發執行緒安全使用。Matcher 類的例項用於此目的則不安全。

public final class Matcher
通過解釋 Pattern 對 character sequence 執行匹配操作的引擎。

通過呼叫模式的 matcher 方法從模式建立匹配器。建立匹配器後,可以使用它執行三種不同的匹配操作:

matches 方法嘗試將整個輸入序列與該模式匹配。

lookingAt 嘗試將輸入序列從頭開始與該模式匹配。

find 方法掃描輸入序列以查詢與該模式匹配的下一個子序列。

其中的方法及功能:
(1)Pattern中的compile(String regex)
返回型別:static Pattern
將給定的正則表示式編譯到模式中
(2)Pattern 中的matcher(CharSequence input)
返回型別 :Matcher
建立匹配給定輸入與此模式的匹配器。
(3)Matcher 中的 matches()
嘗試將整個區域與模式匹配。

14.10_常見物件(正則表示式的獲取功能)

  • A:正則表示式的獲取功能
    • Pattern和Matcher的結合使用
  • B:案例演示
    • 需求:把一個字串中的手機號碼獲取出來
      作用:可以在一堆字串中獲取到手機號碼或者郵箱等,可用於商業廣告的傳送(垃圾廣告,但是也會有人閱讀,是比較廉價有效的推廣方式之一)
      分析:
      (1)建立手機號碼正則表示式
      (2)建立匹配器
      (3)利用Matcher中的find()方法
      作用:到指定字串中挨個找符合規則的字串
      返回型別:boolean
      (4)用Matcher中的group()
      作用:返回以前所匹配到的子序列
      返回型別:String
      (5)利用while迴圈獲取全部(find相當於有一個指標)

程式碼實現:

package com.heima.Regex;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class demo_10 {
	public static void main(String[] args) {
		String s =	 "我現在的號碼是13556540583,以前的號碼是15521113987,還用過號碼13426954875";
		String regex = "1[234578]\\d{9}";			//手機號碼的正則表示式
		Pattern p = Pattern.compile(regex);	//獲取正則表示式
		Matcher m  = p.matcher(s);					//獲取匹配器
		while(m.find()) {									//挨個字元進行拼配
			System.out.println(m.group());		//匹配上就進行列印
			
		}
	}
}

程式結果:
13556540583
15521113987
13426954875