📜  Java中的 MatchResult end(int) 方法和示例(1)

📅  最后修改于: 2023-12-03 15:16:25.003000             🧑  作者: Mango

Java中的MatchResult end(int)方法和示例

简介

MatchResult是Java的正则表达式匹配结果的接口,它定义了一系列获取匹配结果的方法。其中,end(int)方法可以返回匹配的子字符串在输入字串中的结束位置(不包括此位置)。

方法签名
int end(int group)

参数说明:

  • group:要获取子字符串的编号,0表示整个匹配的子串,1表示第一个括号表达式中的子串,以此类推。

返回值:

  • 给定编号(group)的子串在输入字符串中的结束位置(不包括此位置)。如果给定的编号没有匹配,返回-1。
示例
import java.util.regex.*;

public class MatchResultDemo {
    public static void main(String[] args) {
        String input = "Hello, World!";
        Pattern pattern = Pattern.compile("\\w+");
        Matcher matcher = pattern.matcher(input);
        while (matcher.find()) {
            MatchResult result = matcher.toMatchResult();
            System.out.println("匹配的子串:" + result.group()
                    + ",开始位置:" + result.start()
                    + ",结束位置:" + result.end());
            System.out.println("第一个括号表达式的子串,开始位置:"
                    + result.start(1) + ",结束位置:" + result.end(1));
        }
    }
}

输出结果:

匹配的子串:Hello,开始位置:0,结束位置:5
第一个括号表达式的子串,开始位置:-1,结束位置:-1
匹配的子串:World,开始位置:7,结束位置:12
第一个括号表达式的子串,开始位置:-1,结束位置:-1

在示例中,我们新建了一个Matcher匹配器对“Hello, World!”这个字符串进行匹配,匹配模式是“\w+”,即匹配所有的单词。在while循环中,使用Matcher的find方法逐个匹配单词。每次匹配完成后,我们可以通过matcher.toMatchResult()方法获取MatchResult对象,该对象记录了本次匹配的一些相关信息。

我们通过result.group()方法来获取本次匹配的子串,result.start()方法获取该子串在输入字符串中的开始位置,result.end()方法获取该子串在输入字符串中的结束位置。

例如,第一次匹配的子串是“Hello”,start()方法返回0,end()方法返回5,这是因为“Hello”的开始位置是0,在“Hello”后面紧跟着一个逗号“,”,其结束位置是5。

我们还可以通过result.start(int group)和result.end(int group)方法来获取正则表达式中用括号“()”包围的表达式匹配的子串在输入字符串中的开始位置和结束位置。由于我们在示例中没有用到带括号的正则表达式,所以通过这两个方法获取到的结果都是-1。(因为-1表示未匹配到)

总结

MatchResult接口提供了获取正则表达式匹配结果的各种方法,end(int)方法则可以获取匹配的子串在输入字符串中的结束位置。我们可以将该方法用于编写自己的正则表达式匹配类或者在实际开发中使用。