當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Java Matcher用法及代碼示例


在Java中,Matcher是一個由MatchResult接口實現的類,它通過解釋Pattern對字符序列執行匹配操作。

下麵,我們可以看到聲明java.util.regex.Matcherjava.lang.Object類:

public final class Matcher extends Object implements MatchResult

通過調用模式的匹配器方法,可以根據模式創建匹配器。如果匹配器被創建一次,我們可以對其執行三種不同類型的匹配操作:

  • matches()嘗試將總輸入序列與模式進行匹配。
  • lookingAt()嘗試從頭開始根據模式匹配輸入序列。
  • find()這會掃描輸入序列並查找下一個與模式特別匹配的子序列。

Matcher類的方法

為了方便起見,下麵的 Matcher 類的方法根據其函數分組在表中。

1、索引方法:

它提供有用的索引值。它準確顯示是否在輸入字符串中找到匹配項:

S. 編號 方法名稱 說明
1 公共 int start() 此方法返回上一場比賽的開始索引。
2 公共int開始(int組) 此方法返回給定組在上一次匹配操作期間捕獲的子序列的起始索引。
3 公共 int end() 該方法返回最後一個字符匹配後的偏移量。
4 公共int結束(int組) 此方法返回在上一次匹配操作期間給定組捕獲的子序列的最後一個字符之後的偏移量。

2. 學習方法:

它檢查輸入字符串並返回一個布爾值,指示是否找到該模式:

S. 編號 方法名稱 說明
1 公共布爾值lookingAt() 此方法旨在從區域的開頭開始將輸入序列與模式進行匹配。
2 公共布爾值find() 該方法的目的是找到輸入序列中與模式匹配的下一個子序列。
3 公共布爾查找(int start) 重置此匹配器,然後嘗試從指定索引開始查找輸入序列中與模式匹配的下一個子序列。
4 公共布爾值matches() 此方法旨在將整個區域與模式進行匹配。

3、更換方法:

這些是替換輸入字符串中文本的有用方法:

S. 編號 方法名稱 說明
1 公共匹配器appendReplacement(StringBuffer sb,字符串替換) 此方法實現非終止append-and-replace步驟。
2 公共StringBufferappendTail(StringBuffer sb) 該方法實現了最終append-and-replace步驟。
3 公共字符串replaceAll(字符串替換) 此方法用給定的替換字符串替換與模式匹配的輸入序列的每個子序列。
4 公共字符串replaceFirst(字符串替換) 此方法用給定的替換字符串替換與模式匹配的輸入序列的第一個子序列。
5 公共靜態字符串 quoteReplacement(String s) 此方法返回指定 String 的文字替換 String,此方法還會生成一個 String,該 String 將在appendReplacement 方法中作為 Matcher 類的文字替換。

示例 1:在這裏我們可以看到示例GFG.java,它計算單詞“geek”在輸入字符串中出現的次數,使用start()end()

Java


// Java program to demonstrate the 
// methods of Matcher class in Java 
  
import java.util.regex.Matcher; 
import java.util.regex.Pattern; 
  
public class GFG { 
  
    private static final String REGEX = "\\bgeek\\b"; 
    private static final String INPUT 
        = "geek geek geek geekie geeks"; 
  
    public static void main(String[] args) 
    { 
        Pattern pat = Pattern.compile(REGEX); 
        
        //  here get a matcher object 
        Matcher mat = pat.matcher(INPUT); 
        
        // initialize a count variable to count 
        int count = 0; 
  
        // try to match the entire input sequence against 
        // the pattern using the loop 
        while (mat.find()) { 
            count++; 
            System.out.println("Match number " + count); 
            System.out.println("start(): " + mat.start()); 
            System.out.println("end(): " + mat.end()); 
        } 
    } 
}
輸出
Match number 1
start(): 0
end(): 4
Match number 2
start(): 5
end(): 9
Match number 3
start(): 10
end(): 14

示例 2:在這個例子中,我們可以看到 GFG.java,lookingAt()matches()兩者都嘗試將輸入序列與模式進行匹配。

Java


// Java program to demonstrate the 
// methods of Matcher class in Java 
  
import java.util.regex.Matcher; 
import java.util.regex.Pattern; 
  
public class GFG { 
  
    private static final String REGEX = "geek"; 
    private static final String INPUT = "geeksforgeeks"; 
    private static Pattern pat; 
    private static Matcher mat; 
  
    public static void main(String[] args) 
    { 
  
        // Initialization for pattern and matcher 
        pat = Pattern.compile(REGEX); 
        mat = pat.matcher(INPUT); 
  
        System.out.println("Current REGEX: " + REGEX); 
        System.out.println("Current INPUT: " + INPUT); 
  
        System.out.println("lookingAt(): "
                           + mat.lookingAt()); 
        System.out.println("matches(): " + mat.matches()); 
    } 
}
輸出
Current REGEX: geek
Current INPUT: geeksforgeeks
lookingAt(): true
matches(): false


相關用法


注:本文由純淨天空篩選整理自kumarsaurabhsingh05大神的英文原創作品 Matcher Class in Java。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。