« 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 150 : Ligne 150 :
*: <code><(?!body).*></code> : pour avoir toutes les balises HTML sauf "body".
*: <code><(?!body).*></code> : pour avoir toutes les balises HTML sauf "body".
*: <code>début((?!mot_exclu).)*fin</code><ref>https://www.regextester.com/15</ref> : pour rechercher tout ce qui ne contient pas un mot entre deux autres.
*: <code>début((?!mot_exclu).)*fin</code><ref>https://www.regextester.com/15</ref> : pour rechercher tout ce qui ne contient pas un mot entre deux autres.
*: <code>(?!000|666)</code> : pour exclure 000 et 666<ref>{{ouvrage|url=https://books.google.fr/books?id=yY_EsWFMj-QC&pg=PA256&lpg=PA256&dq=python+regex+negative+lookahead+two+strings&source=bl&ots=dFQ7mV91WE&sig=ACfU3U0i-oRwa1H6Paxnq1z8WeTkLk7HyQ&hl=fr&sa=X&ved=2ahUKEwjh4fOBsKXqAhXbCWMBHfYODjY4FBDoATACegQIChAB#v=onepage&q=negative%20lookahead&f=false|titre=Regular Expressions Cookbook|auteurs=Jan Goyvaerts, Steven Levithan|éditeur=O'Reilly Media, Inc.|date=22 mai 2009}}</ref>.

<includeonly>{{#if:{{{nocat|}}}||{{#ifeq:{{{1|}}}|nocat||[[Catégorie:Expressions rationnelles|{{{1|{{BASEPAGENAME}}}}}]]}}}}</includeonly>
<includeonly>{{#if:{{{nocat|}}}||{{#ifeq:{{{1|}}}|nocat||[[Catégorie:Expressions rationnelles|{{{1|{{BASEPAGENAME}}}}}]]}}}}</includeonly>

Version du 28 juin 2020 à 22:49

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.
    (?!000|666) : pour exclure 000 et 666[6].


  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
  6. Jan Goyvaerts, Steven Levithan, Regular Expressions Cookbook, O'Reilly Media, Inc., (lire en ligne)