Wikipédia:AutoWikiBrowser/Expressions régulières
Informations générales sur AWB. |
Discussion sur AWB et questions sur son fonctionnement. |
Demande pour être autorisé à utiliser AWB. |
Corrections d'orthographe et de typographie gérées par AWB. |
Requête à faire exécuter par AWB ou un autre robot. |
Pages d'aide à l'utilisation d'AWB. |
|
Introduction
[modifier le code]Les expressions régulières (couramment appelées « regex » ou « regexes » au pluriel) servent beaucoup quand des remplacement complexes ont besoin d'être réalisés. Elles permettent de trouver des mots, groupes de mots, modèles, etc. qui ont potentiellement des graphies différentes, et de les remplacer facilement.
Une blague connue dit pourtant « Quand un informaticien cherche à régler un problème avec une regex, il se retrouve avec deux problèmes ».
Note importante
[modifier le code]Si en général les classes de caractères ne prennent pas en compte les lettres avec des diacritiques (accents, cédilles, etc.), celles d'AWB le font.
Par exemple, la regex \w{3} appliquée à années ne reconnaît que ann, tandis qu'AWB reconnaît ann et ées.
Aide à la création de regexes
[modifier le code]Si vous avez besoin d'aide pour créer des regexes complèxes, vous pouvez essayer de demander :
- Sur les pages Discussion Wikipédia:AutoWikiBrowser, Discussion Wikipédia:Bot, ou éventuellement sur le Bistro du jour.
- Sur dans le salon Technique] du serveur Wikipédia en français de Discord (invitation).
- Sur le site StackOverflow (en anglais, préciser que c'est pour AutoWikiBrowser et la flavour « .NET », ajouter les tags
.net,regex,wikipedia,wiki,wikitext), mais écrivez attentivement la question en donnant des exemples, tout en vous disant bien que beaucoup de ses membres sont toxiques et que la plupart ne parle qu'anglais et est réfractaire aux autres langues. - À une intelligence artificielle générative, tout en sachant que ses regex ne marchent pas forcément comme prévu, il faut les tester en profondeur (en juillet 2026, qwen.ai donne des résultats acceptables et gratuits).
Définitions
[modifier le code]Le tableau suivant montre les « match » surlignés en bleu (1er match, 2e match, 3e match, etc.).
| Ancres | ||||
|---|---|---|---|---|
| Ancre | Description | Exemple | Correspondance | |
^ |
Début de la page (ou de la ligne si multiline est choisi). (Attention : ce caractère sert aussi pour la négation des classes de caractères). |
^\w{4} |
abcddefg | |
\A |
Début de la page (même si multiline est choisi). | \A\w{4} |
abcddefg | |
$ |
Fin de la page (ou de la ligne si multiline est choisi). (Attention : ce caractère sert aussi pour les backreferences). |
\w{4}$ |
abcddefg | |
\Z |
Fin de la page (même si multiline est choisi). | \w{4}\Z |
abcddefg | |
\b |
Début ou à la fin d'un mot : limite entre un caractère alphanumérique (lettre, chiffre, caractère de soulignement « _», voir \w) et un caractère non-alphanumérique (espace, autre caractère, début ou fin de ligne, etc. voir \W) |
\b\d{3} |
12 3456 a7890 | |
\B |
Pas au début ni à la fin d'un mot. | \B\d{3} |
12 3456 a7890 | |
| Classes de caractère | ||||
| Classe | Description | Exemple | Correspondance | |
[caractères] |
N'importe quel caractère unique entre crochets (respecte la casse par défaut). | [ep] |
Exemple : | |
[^caractères] |
N'importe quoi, y compris une nouvelle ligne, sauf les caractères entre crochets (respecte la casse par défaut). | [^ep] |
Exemple : | |
[x-y] |
N'importe quel caractère unique (lettre ou chiffre) dans la plage comprise entre x et y (respecte la casse par défaut). | [e-m] |
Exemple : | |
. |
N'importe quel caractère sauf une nouvelle ligne. | .an |
ran-tan-plan | |
\w |
N'importe quel caractère alphanumérique (lettres, chiffres, caractère de soulignement) | \w |
(années 1980-1990) | |
\W |
N'importe quel caractère non-alphanumérique | \W |
(années 1980-1990) | |
\s |
Caractère d'espace (espace, tabulation, nouvelle ligne) | \d\s |
123 45 678 abc9 0def | |
\S |
N'importe quel caractère autre qu'un espace | \d\S |
123 45 678 abc9 0def | |
\d |
N'importe quel chiffre | \d |
(années 1980-1990) | |
\D |
N'importe quel caractère autre qu'un chiffre | \D |
(années 1980-1990) | |
\n |
Nouvelle ligne | \nmachin |
truc machin chose machin chose truc chose truc machin | |
| Quantificateurs | ||||
| Quantificateur | Description | Exemple | Correspondance | |
* |
0 fois ou plus l'élément précédent. | 12*3 |
012300112233000111333 | |
+ |
1 fois ou plus l'élément précédent. | 12+3 |
012300112233000111333 | |
? |
0 ou 1 fois l'élément précédent. | 12?3 |
012300112233000111333 | |
{n} |
Exactement n fois l'élément précédent. | \d{2} |
0 12 345 6789 | |
{n,} |
Au moins n fois l'élément précédent. | \d{2,} |
0 12 345 6789 | |
{n,m} |
Entre n fois et m fois l'élément précédent. | \d{2,3} |
0 12 345 6789 | |
| Caractère d'échappement | ||||
| Caractère d'échappement | Description | Exemple | Correspondance | |
\ |
Reconnait le caractère qui le suit comme un caractère normal et non comme une fonction regex. Peut être utilisé rechercher les caractères utilisés par la syntaxe regex (ancres, quantificateurs, crochets, parenthèses, etc.) Par exemple : * $ + . ? ^ ( ) [ ] { } | \ > < (liste incomplète) |
\* *\[\[[a-z]*\]\] |
* [[truc]] machin *[[machin]] truc * [[truc-machin]] | |
| Groupes | ||||
| Groupe | Description | Exemple | Correspondance | |
(expression) |
Capture tout ce qui est entre les parenthèses. $1, $2, etc. permettent de rappeler le contenu des groupes (backreference) | Ex(\w*)le |
Exemple | |
| |
Alternance (reconnait soit ce qui est à droite, soit ce qui est à gauche) | truc|machin|chose |
truc ou machin ou chose | |
| Chaîne correspondante | Commentaire | |||
\1, \2, \3, etc. |
Correspond aux chaînes dans les groupes de capture (...). | (\n[^\n]+)\1 correspond aux lignes identiques adjacentes, $1 les remplacera par une seule copie | ||
| \k<nom> | Correspond aux chaînes dans les groupes nommés (?<nom>...). | |||
| Backreference | Commentaire | |||
(truc) (machin) (chose) |
$1 renvoie truc | |||
(truc) (machin) (chose) |
$2 renvoie machin | |||
(truc) (machin) (chose) |
$3 renvoie chose | |||
(A) (B) (C) (D) (E) (F) (G) (H) (I) (J) |
$10 renvoie J | |||
(A) (B) (C) (D) (E) (F) (G) (H) (I) (J) |
${1}0 renvoie A0 | |||
| Extension notation | Commentaire | |||
| (?:...) parenthèses sans capture | (?:abc) match and consume, but don't capture, abc | |||
| (?=...) positive lookahead, no string consumed | abc(?=xyz) renvoie abc seulement s'il est suivi de xyz | |||
| (?!...) negative lookahead, no string consumed | abc(?!xyz) renvoie abc sauf s'il est suivi de xyz | |||
| (?<=...) positive lookbehind, no string consumed | (?<=xyz)abc renvoie abc seulement s'il est précédé de xyz | |||
| (?<!...) negative lookbehind, no string consumed | (?<!xyz)abc renvoie abc sauf s'il est précédé de xyz | |||
| (?<nom>...) donne un nom au groupe de capture | (?<année>\s\d{4}\s) renvoie 2016 s'il est entouré d'espaces | Rappel du contenu du groupe nommé en utilisant ${année} | ||
| (?#...) commentaire | (?#Mettre un commentaire ici) | |||
| Exemple d'expression | ||||
| L'expression régulière | Reconnaît | Exemple | ||
| ([A-Za-z0-9-]+) | Un ou plusieurs caractères qui sont des lettres (mais pas les lettres accentuées), des chiffres ou des tirets | truc ou 2000 ou 2000-2005 ou truc-2000 | ||
| (\d{1,2}\/\d{1,2}\/\d{4}) | Date | 3/24/2008 ou 03/24/2008 ou 24/03/2008 | ||
| \[\[\d{4}\]\] | Lien interne de 4 chiffres. | [[2008]] |
Annexes
[modifier le code]Articles connexes
[modifier le code]- Expression régulière
- (en) Regular Expressions sur Wikibooks.
Liens externes
[modifier le code]Manuels d'utilisation
[modifier le code]- (en) « Regular Expressions in .NET », sur Well House Consultants.
- (en) « Regular-Expressions.info ».
- « Langage des expressions régulières - Aide-mémoire », sur MSDN Microsoft.
- « Expressions régulières du .NET Framework », sur MSDN Microsoft.
Testeur d'expressions régulières en ligne
[modifier le code]- (en) « Regex101 » (utiliser la Flavor
.NET 7.0 (C#)).
Testeur d'expressions régulières pour Windows
[modifier le code]- (en) « Regex Hero ».
Forum d'aide
[modifier le code]- (en) « Questions », sur Stack Overflow (utiliser les tags
regexet/ouwikitext).
