在java中查找下一个匹配项时如何处理匹配的正则表达式?

在java中查找下一个匹配项时如何处理匹配的正则表达式?,java,regex,Java,Regex,现在在java中,我正在这样做 String finalstring = br.readLine(); Pattern rx = Pattern.compile("(x?\\d+)"); Matcher m = rx.matcher(finalstring); while (m.find()) { System.out.println(m.group(0).toString()); } 循

现在在java中,我正在这样做

        String finalstring = br.readLine();
        Pattern rx = Pattern.compile("(x?\\d+)");
        Matcher m = rx.matcher(finalstring);

        while (m.find()) {
            System.out.println(m.group(0).toString());
        }
循环进行比赛。但这首先通过整个字符串创建组,即m,然后循环所有组。这就是两个循环。有没有办法让我做类似的事情

        String finalstring = br.readLine();
        Pattern rx = Pattern.compile("(x?\\d+)");
        Matcher m = rx.matcher(finalstring, function(Matcher m) {
            System.out.println(m.group(0).toString());
        });
这只是伪代码,我混合了javascript。。。但基本上我想要它,这样一旦它找到匹配项,我就可以处理它。那样的话,我只循环一次


谢谢

我想您对rx.matcherfinalString的作用感到困惑。它只初始化Matcher实例,准备查看输入


在调用find之前不会检查输入,即使这样,在找到匹配项时也会停止扫描。

两个示例都会在匹配模式时在单个循环中运行println语句。我看不出这方面有什么不同。你想要什么?-如果你期望多线程执行,比如一个线程继续搜索,而另一个线程处理结果,那就忘了这一点。搜索速度很快。在别处寻找性能优化。与问题无关,但您的代码在模式中有一个捕获组括号,但您不使用结果。捕获的值位于group1中。group0是整个匹配的值,在这种情况下,碰巧是相同的。是什么让你认为这里有两个循环?你认为rx.matcher会在整个字符串中循环吗?事实并非如此;找不到走路的人。