My code :
Pattern pattern = Pattern.compile(\"a?\");
Matcher matcher = pattern.matcher(\"ababa\");
while(matcher.find()){
System.out.println(matcher.star
Iterating over few examples would clear out the functioning of matcher.find()
to you :
Regex engine takes on one character from string (i.e. ababa) and tries to find if pattern you are seeking in string could be found or not. If the pattern exists, then (as API mentioned) :
matcher.start() returns the starting index, matcher.end() returns the offset after the last character matched.
If match do not exists. then start() and end() returns the same index, which is to comply the length matched is zero.
Look down following examples :
// Searching for string either "a" or ""
Pattern pattern = Pattern.compile("a?");
Matcher matcher = pattern.matcher("abaabbbb");
while(matcher.find()){
System.out.println(matcher.start()+"["+matcher.group()+"]"+matcher.end());
}
Output:
0[a]1
1[]1
2[a]3
3[a]4
4[]4
5[]5
6[]6
7[]7
8[]8
// Searching for string either "aa" or "a"
Pattern pattern = Pattern.compile("aa?");
Matcher matcher = pattern.matcher("abaabbbb");
while(matcher.find()){
System.out.println(matcher.start()+"["+matcher.group()+"]"+matcher.end());
}
Output:
0[a]1
2[aa]4