« Modèle:Regex » : différence entre les versions

Un livre de Wikilivres.
Contenu supprimé Contenu ajouté
Aucun résumé des modifications
Aucun résumé des modifications
Ligne 11 : Ligne 11 :
Les expressions rationnelles peuvent être analysées et testées via un débogueur en ligne comme https://regex101.com/.
Les expressions rationnelles peuvent être analysées et testées via un débogueur en ligne comme https://regex101.com/.


{| class="wikitable"
{| class="wikitable altlines1"
|+ Expressions rationnelles courantes
|+ Expressions rationnelles courantes
! Caractère
! Caractère
! Type
! Type
! Explication
! Explication
|-----
|-
| .
| .
| Point
| Point
| n'importe quel caractère
| n'importe quel caractère
|-
|-{{ligne grise}}
| [...]
| [...]
| crochets
| crochets
| {{wt|classe de caractères}} : tous les caractères énumérés dans la classe, avec possibilité de plages dont les bornes sont séparées par "-". Ex : <code>[0-9a-z]</code> pour tout l'alphanumérique en minuscule, ou <code>[0-Z]</code> pour tous les caractères de la table Unicode entre "0" et "Z", c'est-à-dire l'alphanumérique majuscule plus ":;<=>?@"<ref>https://unicode-table.com/fr/</ref>.
| {{wt|classe de caractères}} : tous les caractères énumérés dans la classe, avec possibilité de plages dont les bornes sont séparées par "-". Ex : <code>[0-9a-z]</code> pour tout l'alphanumérique en minuscule, ou <code>[0-Z]</code> pour tous les caractères de la table Unicode entre "0" et "Z", c'est-à-dire l'alphanumérique majuscule plus ":;<=>?@"<ref>https://unicode-table.com/fr/</ref>.
|-----
|-
| [^...]
| [^...]
| crochets et circonflexe
| crochets et circonflexe
| {{wt|classe complémentée}} : tous les caractères sauf ceux énumérés.
| {{wt|classe complémentée}} : tous les caractères sauf ceux énumérés.
|-
|-{{ligne grise}}
| ^
| ^
| circonflexe
| circonflexe
| marque le début de la chaine, la ligne...
| marque le début de la chaine, la ligne...
|-----
|-
| $
| $
| dollar
| dollar
| marque la fin d'une chaine, ligne...
| marque la fin d'une chaine, ligne...
|-
|-{{ligne grise}}
| <nowiki>|</nowiki>
| <nowiki>|</nowiki>
| barre verticale
| barre verticale
| alternative - ou reconnaît l'un ou l'autre
| alternative - ou reconnaît l'un ou l'autre
|-----
|-
| (...)
| (...)
| parenthèses
| parenthèses
| {{wt|groupe de capture}} : utilisée pour limiter la portée d'un masque ou de l'alternative
| {{wt|groupe de capture}} : utilisée pour limiter la portée d'un masque ou de l'alternative
|-
|-{{ligne grise}}
| *
| *
| astérisque
| astérisque
| 0, 1 ou plusieurs occurrences
| 0, 1 ou plusieurs occurrences
|-----
|-
| +
| +
| le plus
| le plus
| 1 ou plusieurs occurrences
| 1 ou plusieurs occurrences
|-
|-{{ligne grise}}
| ?
| ?
| interrogation
| interrogation
Ligne 70 : Ligne 70 :
! Classe
! Classe
! Signification
! Signification
|----
|-
|<nowiki>[[:alpha:]]</nowiki>
|<nowiki>[[:alpha:]]</nowiki>
|n'importe quelle lettre
|n'importe quelle lettre
|-----
|-
|<nowiki>[[:digit:]]</nowiki>
|<nowiki>[[:digit:]]</nowiki>
|n'importe quel chiffre
|n'importe quel chiffre
|-----
|-
|<nowiki>[[:xdigit:]] </nowiki>
|<nowiki>[[:xdigit:]] </nowiki>
|caractères hexadécimaux
|caractères hexadécimaux
|-----
|-
|<nowiki>[[:alnum:]]</nowiki>
|<nowiki>[[:alnum:]]</nowiki>
|n'importe quelle lettre ou chiffre
|n'importe quelle lettre ou chiffre
|-----
|-
|<nowiki>[[:space:]]</nowiki>
|<nowiki>[[:space:]]</nowiki>
|n'importe quel espace blanc
|n'importe quel espace blanc
|-----
|-
|<nowiki>[[:punct:]]</nowiki>
|<nowiki>[[:punct:]]</nowiki>
|n'importe quel signe de ponctuation
|n'importe quel signe de ponctuation
|-----
|-
|<nowiki>[[:lower:]] </nowiki>
|<nowiki>[[:lower:]] </nowiki>
|n'importe quelle lettre en minuscule
|n'importe quelle lettre en minuscule
|-----
|-
|<nowiki>[[:upper:]] </nowiki>
|<nowiki>[[:upper:]] </nowiki>
|n'importe quelle lettre capitale
|n'importe quelle lettre capitale
|-----
|-
|<nowiki>[[:blank:]]</nowiki>
|<nowiki>[[:blank:]]</nowiki>
|espace ou tabulation
|espace ou tabulation
|-----
|-
|<nowiki>[[:graph:]] </nowiki>
|<nowiki>[[:graph:]] </nowiki>
|caractères affichables et imprimables
|caractères affichables et imprimables
|-----
|-
|<nowiki>[[:cntrl:]]</nowiki>
|<nowiki>[[:cntrl:]]</nowiki>
|caractères d'échappement
|caractères d'échappement
|-----
|-
|<nowiki>[[:print:]]</nowiki>
|<nowiki>[[:print:]]</nowiki>
|caractères imprimables exceptés ceux de contrôle
|caractères imprimables exceptés ceux de contrôle

Version du 14 juin 2020 à 17:53

Consultez également ces pages dans d’autres projets Wikimedia :

Article encyclopédique sur Wikipédia.
Définition sur Wiktionnaire.
Ressources éducatives sur Wikiversité.

Les expressions rationnelles peuvent être analysées et testées via un débogueur en ligne comme https://regex101.com/.

Expressions rationnelles courantes
Caractère Type Explication
. Point n'importe quel caractère
[...] crochets classe de caractères : tous les caractères énumérés dans la classe, avec possibilité de plages dont les bornes sont séparées par "-". Ex : [0-9a-z] pour tout l'alphanumérique en minuscule, ou [0-Z] pour tous les caractères de la table Unicode entre "0" et "Z", c'est-à-dire l'alphanumérique majuscule plus ":;<=>?@"[1].
[^...] crochets et circonflexe classe complémentée : tous les caractères sauf ceux énumérés.
^ circonflexe marque le début de la chaine, la ligne...
$ dollar marque la fin d'une chaine, ligne...
| barre verticale alternative - ou reconnaît l'un ou l'autre
(...) parenthèses groupe de capture : utilisée pour limiter la portée d'un masque ou de l'alternative
* astérisque 0, 1 ou plusieurs occurrences
+ le plus 1 ou plusieurs occurrences
? interrogation 0 ou 1 occurrence
{...} accolades comptage : détermine un nombre de caractères remplissant les critères qu'il suit. Ex : a{2} deux occurrences de "a", a{1,10} (sans espace) entre une et dix.

Remarques :

  • Les caractères de débuts et fin de chaines (^ et $) ne fonctionnent pas dans [] où ils ont un autre rôle.
  • Les opérateurs * et + sont toujours avides, pour qu'ils laissent la priorité il faut leur apposer un ? à leur suite[2].
Classes de caractères POSIX[3]
Classe Signification
[[:alpha:]] n'importe quelle lettre
[[:digit:]] n'importe quel chiffre
[[:xdigit:]] caractères hexadécimaux
[[:alnum:]] n'importe quelle lettre ou chiffre
[[:space:]] n'importe quel espace blanc
[[:punct:]] n'importe quel signe de ponctuation
[[:lower:]] n'importe quelle lettre en minuscule
[[:upper:]] n'importe quelle lettre capitale
[[:blank:]] espace ou tabulation
[[:graph:]] caractères affichables et imprimables
[[:cntrl:]] caractères d'échappement
[[:print:]] caractères imprimables exceptés ceux de contrôle
Expressions rationnelles Unicode[4]
Expression Signification
\A Début de chaine
\b Caractère de début ou fin de mot
\d Chiffre
\D Non chiffre
\n Fin de ligne
\\pL, \p{L}, \p{Letter} Lettre (dans tout langage)
\s Caractères espace
\S Non caractères espace
\t Tabulation
\w Caractère alphanumérique : lettre, chiffre ou underscore
\W Caractère qui n'est pas lettre, chiffre ou underscore
\X Caractère Unicode
\z Fin de chaine

Constructeurs spéciaux : Ces fonctions précèdent l'expression à laquelle elles s'appliquent, et le tout doit être placé entre parenthèses.

  • ?: : groupe non capturant. Ignorer le groupe de capture lors de la numérotation des backreferences. Exemple : ((?:sous-chaine_non_renvoyée|autre).).
  • ?> : groupe non capturant indépendant.
  • ?<= : positive lookbehind.
  • ?<! : negative lookbehind.
  • ?= : positive lookahead.
  • ?! : negative lookahead. Exclusion d'une chaine. Il faut toujours la faire suivre d'un point. Exemples :
    ((?!sous-chaine_exclue).)
    <(?!body).*> : pour avoir toutes les balises HTML sauf "body".
    début((?!mot_exclu).)*fin[5] : pour rechercher tout ce qui ne contient pas un mot entre deux autres.
  1. https://unicode-table.com/fr/
  2. https://docstore.mik.ua/orelly/webprog/pcook/ch13_05.htm
  3. https://www.regular-expressions.info/posixbrackets.html
  4. http://www.regular-expressions.info/unicode.html
  5. https://www.regextester.com/15