I am Relatively inexperienced in regex. I am playing around with various java classes that are used for regex. Below is an example I am trying out -
import java.util.regex.*;
public class Regex {
    public static void main(String[] args){
        Pattern p = Pattern.compile("\\d*");
        Matcher m = p.matcher("ab34ef");
        while(m.find()){
            System.out.println(m.start() + m.group());
        }
    }   
}
When I run this I get -
0
1
234
4
5
6
The m.start() function returns the position of the character the match was found on. The pattern follows a 0 based index.
So here is my interpretation of the output -
0   (index = 0 , no matching group)
1   (index = 1 , no matching group)
234 (index = 2 , matching group = 34)
4   (index = 4 , no matching group)
5   (index = 5 , no matching group)
6   (Why does this happen?)
Why would m.start() return 6 ? The string is 6 characters long so the last index should be 5. I think I am missing something very basic here. Any pointers or suggestions are welcome.
