J'ai cherché le sens de ces expressions, mais ne pouvait pas comprendre la nature exacte de differnce entre eux. C'est ce qu'ils disent:
-
?:
Correspondent à l'expression, mais ne pas le capturer. -
?=
Correspondent à un suffixe, mais de l'exclure de la capture. -
?!
Match si le suffixe est absent.
J'ai essayé à l'aide de ces simples RegEx et a obtenu des résultats semblables pour tous. exemple: voici les 3 expressions donnent des résultats très similaires.
[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+(?!\.[a-zA-Z0-9]+)*
[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+(?=\.[a-zA-Z0-9]+)*
[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9]+)*