Je pense que ce tutoriel explique ce qu'est exactement un "groupe indépendant non capturant" ou un "groupement atomique"
L'expression régulière a(bc|b)c
(groupe capturant) correspond à abcc et abc. L'expression régulière a(?>bc|b)c
(groupe atomique) correspond à abcc mais pas à abc.
Lorsqu'elle est appliquée à abc, les deux expressions régulières correspondront a
à a, bc
à bc, puis c
ne correspondra pas à la fin de la chaîne. À ce stade, leurs chemins divergent. L'expression régulière avec le groupe capturant a retenue une position de retour en arrière pour l'alternance. Le groupe va abandonner son match, b
va correspondre à b puis c
correspondra à c. Match trouvé!
L'expression régulière avec le groupe atomique, cependant, a quitté un groupe atomique après que bc
ait été trouvé. À ce stade, toutes les positions de retour en arrière pour les jetons à l'intérieur du groupe sont supprimées. Dans cet exemple, l'option d'alternance pour essayer b
à la deuxième position dans la chaîne est abandonnée. Par conséquent, lorsque c
échoue, le moteur d'expressions régulières n'a plus d'alternatives à essayer.