Because it's done with lookaheads, the last example works with strings in either order. That is, in fact, why it is done with lookaheads. In my mind, lookaheads like this are the "and" that complements alternation's "or" in regexen.
Caution: Contents may have been coded under pressure.
Comment on Re^2: grep for lines containg two variables