Match this pattern against the string repeatedly.
start is provided, matching will start at that index.
The returned iterable lazily computes all the non-overlapping matches of the pattern on the string, ordered by start index. If a user only requests the first match, this function should not compute all possible matches.
The matches are found by repeatedly finding the first match of the pattern on the string, starting from the end of the previous match, and initially starting from index zero.
If the pattern matches the empty string at some point, the next match is found by starting at the previous match's end plus one.
Iterable<Match> allMatches(String string, [int start = 0]);