当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。