Pattern Match 結果の Stream

Java 9 からは、java.util.regex.Matcher に、待望の
  public Stream<MatchResult> results()
が追加されたが、
Java8 のままで同様の Match 結果の Streamを取得するのに、
去年、以下をここに書いた
oboe2uran.hatenablog.com

そして、
https://github.com/yipuran/yipuran-core/tree/master/src/main/java/org/yipuran/regex
を書いたわけだが、、
java.util.Spliterators の spliteratorUnknownSize メソッドでマッチ結果の
Spliterator<String> を取得してStreamSupport で、 Stream 生成する手段もある。

public static Stream<String> patternToStream(Pattern pattern, String target){
   Matcher m = pattern.matcher(target);
   return StreamSupport.stream(
Spliterators.spliteratorUnknownSize(new Iterator<String>(){
      @Override
      public boolean hasNext(){
         return m.find();
      }
      @Override
      public String next(){
         return m.group();
      }
   }, Spliterator.ORDERED), false);
}

以下のように書けるはずだ。

patternToStream(Pattern.compile("[a-z]+"), string).forEach(e->{
   System.out.println(e);
});

Java9 以降の MatchResult の Stream もそれはそれで使い道もあるが、
単純な match 結果の stream 取得も魅力的に思います。