So I ran into a bug caused by expecting the matches() method to find exactly the same match as using find(). Normally this is the case, but it appears that if a non-greedy p
This makes perfect sense.
The matches(...) method must attempt to consume the whole string, so it does, even with a non-greedy pattern.
matches(...)
The find(...) method may find a substring, so it stops at the point if finds any matching substring.
find(...)