当前位置:  开发笔记 > 编程语言 > 正文

计数正则表达式与流匹配

如何解决《计数正则表达式与流匹配》经验,为你挑选了0个好方法。

我试图用简单的Java 8 lambdas/stream解决方案来计算正则表达式模式的匹配数.例如,对于此模式/匹配器:

final Pattern pattern = Pattern.compile("\\d+");
final Matcher matcher = pattern.matcher("1,2,3,4");

有一种方法splitAsStream可以在给定模式上分割文本而不是匹配模式.虽然它很优雅并且保留了不变性,但它并不总是正确的:

// count is 4, correct
final long count = pattern.splitAsStream("1,2,3,4").count();

// count is 0, wrong
final long count = pattern.splitAsStream("1").count();

我也试过(ab)使用IntStream.问题是我必须猜测应该调用多少次matcher.find()而不是直到它返回false.

final long count = IntStream
        .iterate(0, i -> matcher.find() ? 1 : 0)
        .limit(100)
        .sum();

我所熟悉的传统的解决方案while (matcher.find()) count++;,其中count是可变的.使用Java 8 lambdas/streams有一种简单的方法吗?

推荐阅读
贾志军
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有