Here is the RE again: X+X+
And here is a string: XXXX
Since it is greedy, the first X+
matches as much
as it can without blocking the entire RE from matching, which is XXX .
The final 'X' is matched by last part of the RE.
Bug Alert! It is tempting to think that each half of X+X+
matches the same number of chracters X.
But this is not so.
The star *
plus +
and ?
quantifiers are all greedy.
Each of them matches as much as it can without preventing a match between the complete RE and the string.
Here is a RE
A*A*
and here is a string
AAAAAAAA
The RE matches the string.
In this case, the first A*
in the RE matches
the entire string, since the second A*
will then
match zero characters and the entire match will still succeed.
Here is a RE Z*Z+
and here is a string it matches:
ZZZZ .
What part of the string does Z*
match?
Is there a simpler RE that matches the same set of strings?