java - 正则表达式查找方法

标签 java regex

这是我在给定字符串中查找“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 形式返回起始索引。

如果您想真正深入了解,我建议您查看 source code Matcher 类。

关于java - 正则表达式查找方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43230582/

相关文章:

Java:流上的函数组合

java - 如何嵌套枚举

regex - 在文件中搜索RegEx字符串,仅返回文件名,路径和字符串

javascript - 在数据数组中查找正则表达式数组的元素

python - 使用字符串操作或正则表达式排除非特定格式的抓取结果

java - Android:java 舍入错误。不明白为什么?

java - 具有多个接受答案的 JUnit 测试

java - Android离线模式下的时间作弊预防

python - 正则表达式模块的奇怪 Python 行为

javascript - 正则表达式:替换两个不匹配的字符串之间的字符串