正则表达式查找方法[英] Regular Expression find method

问题描述

这是我在给定字符串中查找 "ab" 模式的代码.

import java.util.regex.*;
public class RegExp
{
    public static void main(String[] args)
    {
        Pattern p = Pattern.compile("ab");
        Matcher m = p.matcher("ababbaba");
        while(m.find())
        {
            System.out.println(m.start());
        }
    }
}

但我无法理解 find() 和 start() 的内部工作原理.

推荐答案

find方法扫描输入序列寻找下一个匹配模式的子序列,返回一个boolean表示失败成功.

内部 find 方法调用 search 方法(访问控制默认),以便启动搜索以在给定范围内找到 Pattern.在每次匹配时,边界将递增,直到找到所有匹配项.

在 Matcher 类后面是一个状态机,它将保存比赛的状态.

另一方面,start 方法返回起始索引作为最新匹配捕获的子序列的 int.

如果你真的想更深入,我建议查看 Matcher 类的源代码.

本文地址:https://www.itbaoku.cn/post/978376.html