Hum, suite a ce post ou pseudocode m'avait donné un solution géniales en utilisant les expressions régulières (dont je n'avais jamais encore entendu parlé).

Je me suis penché donc plusieurs heures sur la compréhension de ces expressions, et je butes sur certains points.

Si l'on prend l'ex de c'elle dont j'ai besoin :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?
La première chose c'est que je ne comprend trop l'histoire de cet "backreference" cad les "?:" aprés le "("

ensuite j'ai réellement du mal a comprendre les :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
 (?:[a-z0-9-]*[a-z0-9])?
dans les 2 cas ???



Effectivement, pour le tld je ne vois pas pourquoi on fait :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
[a-z0-9](?:[a-z0-9-]*[a-z0-9])?
et pas


Quand a :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*
on pourrait aussi faire plus simple
Code : Sélectionner tout - Visualiser dans une fenêtre à part
[a-z0-9!#$%&'*+/=?^_`{|}~-\.]*


Ce qui donnerai bien plus simplement :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
[a-z0-9!#$%&'*+/=?^_`{|}~-\.]+@[a-z0-9-\.]+[a-z0-9]+
au lieu de
Code : Sélectionner tout - Visualiser dans une fenêtre à part
[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?

Merci, car la je suis un peu perdu ...