Recherchez parmi les quarante lignes par syntaxe, signification ou exemple, ou parcourez le tableau. Les notes signalent où JavaScript, PCRE, Python, Java, .NET, Go et Ruby se séparent.
Fonctionne localement dans votre navigateur| Syntaxe | Signification | Exemple |
|---|---|---|
\ | Échappe un métacaractère ou démarre une séquence spéciale. | \. correspond à un point littéral. |
^ | Correspond au début de l'entrée ou au début d'une ligne en mode multiligne. | ^Error |
$ | Correspond à la fin de l'entrée ou à la fin d'une ligne en mode multiligne. | done$ |
i, m, s, u, x | Options placées après le délimiteur de fermeture : i ignore la casse, m fait correspondre ^ et $ aux sauts de ligne, s fait aussi correspondre . aux sauts de ligne, u active le mode Unicode en JavaScript, et x ignore les espaces non échappés et les commentaires # dans PCRE, Python, Java et Ruby. | /^done$/im |
. | Correspond à un caractère ; Les sauts de ligne sont exclus sauf si le mode point-tout est activé. | a.c |
* | Répète le jeton précédent zéro ou plusieurs fois. | ab*c |
+ | Répète le jeton précédent une ou plusieurs fois. | ab+c |
? | Rend le jeton précédent facultatif. | colou?r |
{n} | Répète le jeton précédent exactement n fois. | \d{4} |
{n,} | Répète le jeton précédent au moins n fois. | \w{3,} |
{n,m} | Répète le jeton précédent de n à m fois. | [A-F0-9]{2,8} |
*?, +?, ?? | Utilise une répétition paresseuse et consomme le moins d’entrées possible. | <.*?> |
*+, ++, ?+ | Quantificateurs possessifs : ils correspondent de façon gloutonne et ne rendent jamais de caractères, si bien que le moteur ne peut pas revenir en arrière dedans. PCRE, Perl, Java et Python 3.11 ou plus les prennent en charge ; JavaScript, Go et les versions antérieures de Python non. | \d++ |
(?>pattern) | Groupe atomique : le groupe conserve sa première correspondance et n’est pas réévalué pendant le retour sur trace. PCRE, .NET, Java, Perl et Python 3.11 ou plus le prennent en charge ; JavaScript n’a pas de groupe atomique. | (?>a|ab)c |
[abc] | Correspond à un caractère de l'ensemble. | gr[ae]y |
[^abc] | Correspond à un caractère qui ne fait pas partie de l'ensemble. | [^0-9] |
[a-z] | Correspond à un caractère dans la plage spécifiée. | [A-Za-z] |
[[:alpha:]] | Classe de caractères POSIX dans une expression entre crochets, prise en charge par PCRE, Java, Ruby et les moteurs de type grep, mais pas par JavaScript ni Python, où la propriété Unicode est l’écriture portable. | [[:digit:]]+ |
x|y | Correspond à l'expression de gauche ou à l'expression de droite. | cat|dog |
(pattern) | Regroupe une sous-expression et capture sa correspondance. | (ab)+ |
(?:pattern) | Regroupe une sous-expression sans créer de capture. | (?:https?):// |
(?<name>pattern) | Crée un groupe de capture nommé où le moteur le prend en charge. | (?<year>\d{4}) |
(?P<name>pattern) | Écriture des groupes nommés utilisée par Python et par le moteur RE2 de Go, qui n’accepte aucune référence arrière vers le groupe. | (?P<year>\d{4}) |
(?'name'pattern) | Écriture alternative des groupes nommés utilisée par .NET, PCRE, Perl et Ruby ; Java et JavaScript n’acceptent que la forme entre chevrons. | (?'year'\d{4}) |
\1 | Correspond au même texte capturé par le premier groupe. | \b(\w+)\s+\1\b |
\k<name> | Référence arrière vers un groupe nommé en JavaScript, .NET, PCRE, Java et Ruby ; Python écrit la forme avec P=. | (?<w>\w+)\s+\k<w> |
(?=pattern) | Anticipation positive : nécessite une correspondance suivante sans la consommer. | \d+(?=px) |
(?!pattern) | Anticipation négative : nécessite que le texte suivant ne corresponde pas. | foo(?!bar) |
(?<=pattern) | Lookbehind positif : nécessite une correspondance précédente sans la consommer. | (?<=\$)\d+ |
(?<!pattern) | Lookbehind négatif : nécessite que le texte précédent ne corresponde pas. | (?<!-)\b\d+ |
\A, \z, \Z | Ancres du début et de la fin absolus de la chaîne en PCRE, Python, Java et Ruby ; la forme de fin y autorise aussi un saut de ligne final. JavaScript n’a pas d’équivalent : utilisez ^ et $ sans l’option m. | \A\d{4}\z |
\d / \D | Correspond à un chiffre/à un non-chiffre. Le comportement du Unicode dépend du moteur. | \d+ |
\w / \W | Correspond à un caractère de mot/à un caractère non-verbal. Le jeu de caractères exact dépend du moteur. | \w+ |
\s / \S | Correspond aux espaces/non-espaces. | \s+ |
\b / \B | Correspond à une limite de mot/à une position qui n'est pas une limite de mot. | \bword\b |
\n, \r, \t | Correspond à un saut de ligne, un retour chariot ou une tabulation. | \r?\n |
\xNN | Correspond à un caractère par son unité de code hexadécimal à deux chiffres. | \x41 correspond à A. |
\uNNNN | Correspond à un caractère par une unité de code Unicode à quatre chiffres dans les moteurs prenant en charge cette notation. | \u00A9 correspond ©. |
\u{1F600}, \x{1F600} | Correspond à un point de code au-dessus de U+FFFF : JavaScript écrit \u{...} avec l’option u, tandis que PCRE, Perl et Java écrivent \x{...} et Python \U0001F600. | \u{1F600} |
\p{Letter} | Correspond à une propriété Unicode lorsque les échappements de propriété Unicode sont pris en charge et activés. | \p{Letter}+ |
Le moteur basé sur RE2 de Go omet intentionnellement les recherches et les références arrière. JavaScript nécessite le mode Unicode pour de nombreux échappements de propriétés Unicode. PCRE, .NET, Java, Python et Ruby diffèrent également par la syntaxe de groupe, les indicateurs et les règles de chaîne de remplacement.
Lorsqu'un modèle traite des entrées non fiables ou très volumineuses, évitez les quantificateurs imbriqués ambigus, définissez des limites d'entrée et testez le comportement le plus défavorable pour réduire le risque de retour en arrière excessif.
Quarante constructions en trois colonnes : la syntaxe à saisir, ce qu’elle fait et un exemple court. Les lignes couvrent les échappements, ancres, quantificateurs, classes de caractères, groupes, assertions, options et échappements Unicode communs à JavaScript, PCRE, Python, Java, .NET, Go et Ruby, et précisent les moteurs qui refusent une forme avancée.
La page n’exécute aucun motif : rien n’est compilé ni comparé ici. Le tableau fait partie de la page, le champ de recherche ne fait que masquer des lignes dans le navigateur, et votre saisie n’est envoyée nulle part.
Échappements (\d, \w, \b, \xNN, \uNNNN, \p{Letter}), ancres (^, $, \A, \z, \Z), quantificateurs gourmands, paresseux et possessifs, classes entre crochets et classes POSIX, groupes capturants et non capturants, trois écritures de groupes nommés, rétroréférences, lookahead et lookbehind, options en ligne et échappements de points de code au-delà de U+FFFF.
Les exemples sont des fragments et non des programmes complets : \d++ et (?>a|ab)c montrent la construction en contexte, et les trois lignes qui finissent en phrase — \. correspond à un point littéral., \x41 correspond à A., \u00A9 correspond à ©. — se lisent comme lors d’un test de motif.
Le moteur RE2 de Go omet le lookaround et les rétroréférences ; JavaScript n’a ni groupes atomiques ni quantificateurs possessifs et exige l’option u pour les échappements \u{...} ; une classe POSIX comme [[:alpha:]] fonctionne dans PCRE, Java, Ruby et les moteurs de type grep, mais pas dans JavaScript ni Python.
Python 3.11 et versions ultérieures acceptent les groupes atomiques et les quantificateurs possessifs, que PCRE, Perl et Java connaissaient déjà. Les groupes nommés s’écrivent (?P<name>...) en Python et RE2, (?'name'...) en .NET, PCRE, Perl et Ruby ; la rétroréférence nommée est \k<name>, sauf en Python où elle s’écrit (?P=name).
C’est une table de consultation, pas un testeur : aucun motif n’est compilé, rien n’est comparé à votre texte et aucun code n’est généré. Les onglets ci-dessus portent le reste de la famille — Regex Tester exécute un motif, Regex Code Generator l’écrit pour sept langages, Common Regex Patterns réunit des motifs prêts à l’emploi.
Le tableau est du HTML simple et reste lisible sans JavaScript ; seuls le filtre, le compteur et les boutons de copie ont besoin du script. La recherche compare le texte de la page : une requête comme \d+ est lue comme les trois caractères qu’elle contient, pas comme un motif.