Outils pour utilisateurs

Outils du site


web:php:regex

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
web:php:regex [le 19/09/2013 à 14:54] Yoskoweb:php:regex [le 10/10/2013 à 13:27] (Version actuelle) Yosko
Ligne 5: Ligne 5:
  
 Les regex définie à la base pour Perl, ont été adaptée en PHP avec quelques subtilités évoquées sur [[http://regextester.com/pregsyntax.html|cette page]]. Les regex définie à la base pour Perl, ont été adaptée en PHP avec quelques subtilités évoquées sur [[http://regextester.com/pregsyntax.html|cette page]].
 +
 +[[web:php:regex:example|Quelques regex en vrac à garder sous le coude]].
  
 ===== Fonctions ===== ===== Fonctions =====
Ligne 177: Ligne 179:
 |  ''a*''  | répétition consécutives de ''a'' entre 0 et n fois | |  ''a*''  | répétition consécutives de ''a'' entre 0 et n fois |
 |  ''a+''  | répétition consécutives de ''a'' entre 1 et n fois | |  ''a+''  | répétition consécutives de ''a'' entre 1 et n fois |
-|  ''{3}''  | répétition consécutives de ''a'' 3 fois : ''aaa''+|  ''a{3}''  | répétition consécutives de ''a'' 3 fois : ''aaa''
-|  ''{3,}''  | répétition consécutives de ''a'' entre 3 et n fois |+|  ''a{3,}''  | répétition consécutives de ''a'' entre 3 et n fois |
  
 ==== Les groupes ==== ==== Les groupes ====
 +
 +=== Base ===
  
 Si vous souhaitez appliquer une option, un règle à une section de votre regex qui ne peut pas être désignée de manière unitaire (c'est-à-dire qui n'est pas un caractère unique ou une classe unique), vous pouvez simplement encadrer toute ladite section entre parenthèse. Si vous souhaitez appliquer une option, un règle à une section de votre regex qui ne peut pas être désignée de manière unitaire (c'est-à-dire qui n'est pas un caractère unique ou une classe unique), vous pouvez simplement encadrer toute ladite section entre parenthèse.
  
 Ainsi, ''(to){2}'' trouvera correspondance dans toutes les occurences de ''toto'', et ''to{2}'' pour ''too'' (répétition du ''o'', mais pas du ''t''). Ainsi, ''(to){2}'' trouvera correspondance dans toutes les occurences de ''toto'', et ''to{2}'' pour ''too'' (répétition du ''o'', mais pas du ''t'').
 +
 +== Capture ==
 +
 +L'utilisation d'un groupe engendre une capture, qui peut ensuite être réutilisée (voir chapitre sur les référence). Si vous ne comptez pas réutiliser cette capture, vous pouvez la désactiver pour optimiser votre regex grâce à ''?:''. Ainsi ''(to)'' pourra être réutilisé tandis que ''(?:to)'' ne le pourra pas.
 +
 +== Référence ==
 +
 +Chaque groupe de capture onbtient automatiquement un identifiant qui peut être ensuite réutilisé plus loin dans la regex. Ainsi ''to(to)? et ti(ti) \1\2'' revient au même que ''to(to)? et ti(ti) (to)(ti)''.
 +
 +Cependant, toute référence cherchera non pas le même motif que le groupe, mais bien la même chaine qui a été trouvée en correspondance avec le motif la première fois.
 +
 +Il est possible (en PHP en tout cas) de faire appel à une référence avant la déclaration du groupe. Par contre une référence à un groupe qui n'existe pas engendrera une erreur.
 +
 +Il est possible d'effectuer une référence au sein même du groupe qu'elle est sensée référencer. Cependant, [[http://www.regular-expressions.info/backref2.html|PHP a quelques spécificités à ce propos]].
 +===== Webographie =====
 +
 +  * [[http://www.regular-expressions.info/tutorial.html|regular-expressions.info (en)]] : tuto très complet d'où vient une bonne partie des éléments de cette page.
web/php/regex.1379602442.txt.gz · Dernière modification : le 19/09/2013 à 14:54 de Yosko