Assertion subpatterns are not capturing subpatterns, and may not be repeated, because it makes no sense to assert theAssertion subpatterns are not capturing subpatterns, and may not be repeated, because it makes no sense to assert the same thing several times.
Au contraire, (? =\d{3}(?!999).. .)foo est un autre masque, qui recherche les caractères "foo", précédés par trois chiffres, suivis trois autres caractères qui ne forment pas "999".