I am testing a small stub of Matcher and Pattern class...see the following small stub..

package scjp2.escape.sequence.examples;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Sample_19 {

    public static void main(String a[]){
        String stream = "ab34ef";
        Pattern pattern = Pattern.compile("\\d*");

        //HERE * IS GREEDY QUANTIFIER THAT LOOKS FOR ZERO TO MANY COMBINATION THAT 
        //START WITH NUMBER 
        Matcher matcher = pattern.matcher(stream);

        while(matcher.find()){
            System.out.print(matcher.start()+matcher.group());
        }
    }

}

Here ...our string which we are comparing is "ab34ef". which is of length 6.

Noe let see the iteration...


Iteration NO matcher.start() matcher.group()

1 0 ""

2 1 ""

3 2 34

4 4 ""

5 5 ""

Now ..let combine...matcher.start() + matcher.group().... the output as per our calculation is : 0123445

But, the stub generates 01234456.

I am not able to understand from where the "6" is coming. String index starts from zero and so here there can be maximum index is 5.So from where 6 is coming??

It iterates over the loop six times..How ? Any suggestion ?

Edit
Report