Rechercher avec des expressions régulières
- Last UpdatedSep 24, 2024
- 4 minute read
Une expression régulière permet de décrire une ou plusieurs possibilités de coïncidences au cours d’une recherche, à l’aide de caractères alphanumériques appelés « metacaractères ». L’expression régulière définit un modèle de caractères à comparer au texte du script pendant la recherche.
Une expression régulière se construit de manière similaire à une expression arithmétique. De petites expressions sont combinées moyennant une variété de metacaractères et d’opérateurs pour créer des expressions plus larges.
Les composants d’une expression régulière peuvent être des caractères isolés, des groupes ou des intervalles de caractères, ou encore des choix possibles de caractères. Des composants peuvent aussi être combinés à partir d’autres composants.
Expressions régulières dans un script
|
Expression régulière |
Usage |
Exemple |
|
. |
Coïncide avec tout caractère individuel (sauf retour à la ligne). |
s.e coïncide avec « ste » dans « step » et « sfe » à l’intérieur de « transfer » mais ne coïncide pas avec « acro » dans « across ». |
|
* |
Coïncide avec zéro ou plusieurs occurrences de l’expression précédente (sur le maximum de caractères possibles). |
a*r coïncide avec « r » dans « rack », avec « ar » dans « ark », et avec « aar » dans « aardvark ». |
|
.* |
Coïncide avec tout caractère zéro ou plusieurs fois (caractère générique *). |
c.*e coïncide avec « cke » dans « racket », avec « comme » dans « comment », et avec « code » dans « code » |
|
+ |
Coïncide avec une ou plusieurs occurrences de l’expression précédente (sur le maximum de caractères possibles). |
e.+e coïncide avec « eede » dans « feeder » mais pas avec « ee ». |
|
.+ |
Coïncide avec tout caractère une ou plusieurs fois (caractère générique ?). |
e.+e coïncide avec « eede » dans « feeder » mais pas avec « ee ». |
|
*? |
Coïncide avec zéro ou plusieurs occurrences de l’expression précédente (sur le minimum de caractères possibles). |
e.*?e coïncide avec « ee » dans « feeder » mais pas avec « eede ». |
|
+? |
Coïncide avec une ou plusieurs occurrences de l’expression précédente (sur le minimum de caractères possibles). |
e.+?e coïncide avec « ente » et avec « erprise » dans « enterprise », mais pas avec le mot complet « enterprise ». |
|
^ |
Compare en commençant avec le début d’une ligne ou de la chaîne |
^car coïncide avec le mot « car » uniquement s’il apparaît au début d’une ligne. |
|
\r?$ |
Compare en terminant sur la fin d’une ligne |
End\r? nbsp;coïncide avec le mot « fin » uniquement s’il apparaît en fin de ligne. |
|
[abc] |
Coïncide avec un caractère individuel d’un ensemble. |
b[abc] coïncide avec « ba », « bb » et « bc ». |
|
[a-f] |
Coïncide avec tout caractère dans un intervalle de caractères. |
be[n-t] coïncide avec « bet » dans « between », avec « ben » dans « beneath » et avec « bes » dans « beside », mais pas avec « below ». |
|
() |
Capture et numérote implicitement l’expression se trouvant entre parenthèses |
([a-z])X\1 correspond à "aXa" et "bXb", mais pas à "aXb". ". "\1" renvoie au premier groupe "[a-z]". |
|
(?!abc) |
Annule une coïncidence |
real (?!ity) real (?!ity) coïncide avec « real » dans « realty » et « really » mais ne coïncide pas avec « reality. » L’expression trouve également la seconde occurrence de « real » (mais pas la première occurrence de « real ») dans « realityreal ». |
|
[^abc] |
Coïncide avec tout caractère non compris dans un ensemble donné de caractères. |
be[^n-t] coïncide avec « bef » dans « before », avec « beh » dans « behind » et avec « bel » dans « below », mais pas avec « beneath ». |
|
| |
Coïncide soit avec l’expression précédente, soit avec celle se trouvant après le symbole. |
(sponge|mud)bath coïncide « spongebath » et à « mudbath ». |
|
|\^ |
Échappement du caractère qui suit la barre oblique inversée |
|
|
{x}, |
Spécifie le nombre d’occurrence du caractère ou du groupe précédent |
x(ab){2}x coïncide « xababx », et x(ab){2,3}x coïncide avec « xababx » et « xabababx » mais pas avec « xababababx ». |
|
\p{X} |
Coïncide avec une classe de caractères Unicode, où « X » est le numéro Unicode. |
\p{Lu} coïncide avec « T » et « D » dans « Thomas Doe ». |
|
\b |
Coïncide avec la limite d’un mot. |
\bin coïncide avec « in » dans « inside » mais pas avec « pinto ». |
|
\r?\n |
Coïncide avec un retour à la ligne (suivi par un caractère de saut de ligne). |
End\r?\nBegin coïncide avec « End » et « Begin » uniquement lorsque « End » figure en fin de ligne et « Begin » en début de la ligne suivante. |
|
\w |
Coïncide avec tout caractère alphanumérique. |
a\wd coïncide avec « add » et « a1d » mais pas avec « a d ». |
|
(?[^\r\n])\s |
Coïncide avec tout caractère d’espacement. |
Public\sInterface coïncide avec la phrase « Public Interface ». |
|
\d |
Coïncide avec tout caractère numérique. |
\d coïncide avec « 3 » dans « 3456 », avec « 2 » dans « 23 » et avec « 1 » dans « 1 ». |
|
\uXXXX où XXXX spécifie le code du caractère Unicode |
Coïncide avec un caractère Unicode. |
\u0065 coïncide avec le caractère « e ». |
|
\b(\w+|[\w-[0-9\]]\w*)\b |
Coïncide avec un identifiant. |
Coïncide avec « type1 » mais pas avec « &type1 » ou avec « #define ». |
|
((\".+?\")|(’.+?’)) |
Coïncide avec une chaîne à l’intérieur de guillemets. |
Coïncide toute chaîne se trouvant entre guillemets simples ou doubles. |
|
\b0[xX]([0-9a-fA-F])\b |
Coïncide avec un nombre hexadécimal. |
Coïncide avec « 0xc67f » mais pas avec « 0xc67fc67f ». |
|
\b[0-9]\.\[0-9]+\b |
Coïncide avec des entiers tandis que d |
coïncide avec « 1.333 ». |
Ordre de priorité
Une expression régulière est évaluée de gauche à droite et respecte un certain ordre de priorité.
Le tableau suivant donne l’ordre de priorité des opérateurs d’expressions régulières, par priorité décroissante.
|
Opérateur ou opérateurs |
Description |
|
\ |
Échappement |
|
(), (?:), (?=), [] |
Parenthèses courbes ou droites |
|
*, +, ?, {n}, {n,}, {n,m} |
Quantificateurs |
|
^, $, \toutmétacaractère |
Ancrages et séquences |
|
| |
Alternation |
Les caractères ont une priorité plus haute que l’opérateur d’alternative qui permet d’utiliser, par exemple, « m|chose » pour coïncider avec « m » ou avec « chose ».