^
Debut de ligne ou de chaine
Exemple pratique
^Hello # trouve "Hello world" mais pas "say Hello"
developer reference
Référence pratique pour utiliser Regex au quotidien avec recherche, copie rapide et impression PDF.
Ce test utilise JavaScript RegExp avec recherche globale (g). Utilisez (?<name>...) pour les groupes nommés. La syntaxe et les options Python re ci-dessous s’exécutent en Python, pas dans ce test. Limites : 100 000 caractères de texte, 4 000 de motif et 1 000 correspondances ; les motifs lents sont arrêtés.
35 commandes visibles
^
Debut de ligne ou de chaine
^Hello # trouve "Hello world" mais pas "say Hello"
$
Fin de ligne ou de chaine
world$ # trouve "Hello world" mais pas "world class"
\b
Limite de mot: frontiere mot/non-mot
\bcat\b # "cat" mais pas "catch" ni "concat"
\B
Frontiere non-mot
\Bcat\B # "concatenate" mais pas " cat "
*
0 ou plusieurs fois (greedy)
ab*c # "ac", "abc", "abbc", "abbbc"…
+
1 ou plusieurs fois (greedy)
ab+c # "abc", "abbc" mais PAS "ac"
?
0 ou 1 fois (optionnel)
colou?r # "color" et "colour"
{n,m}
Entre n et m fois
\d{2,4} # 2, 3 ou 4 chiffres
\d{3} # exactement 3 chiffres
*? +? ??
Versions lazy (non-greedy)
# entrée : "<b>bold</b>"
<.+> # gourmand : "<b>bold</b>"
<.+?> # non gourmand : "<b>" puis "</b>"
[abc]
Classe de caracteres: un des caracteres listes
[aeiou] # toute voyelle
[a-z] # a-z minuscules
[A-Za-z0-9]
[^abc]
Negation: tout caractere sauf ceux listes
[^0-9] # pas des chiffres
\d \w \s
Raccourcis: \d chiffre, \w mot, \s espace
\d # [0-9]
\w # [a-zA-Z0-9_]
\s # [ \t\n\r]
\D \W \S
Raccourcis negatifs
\D # pas un chiffre
\W # pas un caractère de mot
\S # pas un espace
.
Tout caractère sauf les fins de ligne ; l’option s (Python re.S) inclut les sauts de ligne
a.b # "aXb", "a b", "a1b"…
(...)
Groupe capturant: capture le match
(\d{4})-(\d{2})-(\d{2})
# trouve "2024-01-15", group(1)="2024"
(?:...)
Groupe non capturant: groupe sans capturer
(?:Mr|Mrs|Ms)\.\s\w+
# regroupe les alternatives sans capture
(?<name>...)
Groupe nomme: capture avec un nom
JavaScript: (?<year>\d{4})-(?<month>\d{2})
match.groups.year
Python: (?P<year>\d{4})-(?P<month>\d{2})
m.group("year")
a|b
Alternative: a ou b
cat|dog # "cat" ou "dog"
(https?|ftp)://
(?=...) (?!...)
Lookahead positif et negatif
\d+(?= euro) # nombre suivi de " euro" (sans capturer " euro")
\d+(?! euro) # nombre NON suivi de " euro"
(?<=...) (?<!...)
Lookbehind positif et negatif
(?<=\$)\d+ # nombre précédé de "$"
re.search (pattern, string)
Trouve la premiere occurrence n'importe ou
import re
m = re.search(r"\d+", "abc 123 def")
if m:
print(m.group()) # "123"
re.match (pattern, string)
Correspond seulement au debut de la chaine
re.match(r"\d+", "123abc") # correspondance
re.match(r"\d+", "abc123") # None
re.findall (pattern, string)
Retourne la liste de tous les matchs
re.findall(r"\d+", "1 apple, 2 bananas, 3 pears")
# → ["1", "2", "3"]
re.sub (pattern, repl, string)
Remplace les matchs par repl
re.sub(r"\s+", " ", "too many spaces")
# → "too many spaces"
re.sub(r"(\w+)", r"[\1]", "hello world")
# → "[hello] [world]" (référence arrière)
re.split (pattern, string)
Decoupe une chaine sur les matchs du motif
re.split(r"[,;\s]+", "a, b; c d")
# → ["a", "b", "c", "d"]
re.compile (pattern, flags)
Precompile un motif pour usage repete
EMAIL = re.compile(r"[\w.+-]+@[\w-]+\.[\w.]+")
for line in lines:
if EMAIL.search(line): ...
re.IGNORECASE
Correspondance insensible a la casse
re.findall(r"hello", text, re.I)
re.compile(r"hello", re.IGNORECASE)
re.MULTILINE
^ et $ correspondent au debut/fin de chaque ligne
re.findall(r"^\w+", text, re.M)
re.DOTALL
Le point (.) correspond aussi au newline
re.search(r"<div>.+?</div>", html, re.S)
re.VERBOSE
Autorise les commentaires dans le motif (re.X)
pattern = re.compile(r"""
\d{4} # année
-
\d{2} # mois
""", re.X)
[\w.+-]+@[\w-]+\.[a-zA-Z]{2,}
Motif simplifié d’adresse e-mail ; ne constitue pas une validation complète
[\w.+-]+@[\w-]+\.[a-zA-Z]{2,}
https?://[\w/:%#$&?()~.=+\-]+
Motif simplifié d’URL HTTP/HTTPS ; ne remplace pas un analyseur complet
https?://[\w/:%#$&?()~.=+\-]+
\b(?:\d{1,3}\.){3}\d{1,3}\b
Motif de forme IPv4 ; ne vérifie pas les plages des octets (0–255)
\b(?:\d{1,3}\.){3}\d{1,3}\b
\b\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])\b
Motif de forme YYYY-MM-DD ; ne vérifie pas les dates du calendrier
\b\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])\b
(?:\+39)?[\s-]?(?:0\d{1,4}|3\d{2})[\s-]?\d{6,8}
Motif simplifié de numéro italien ; ne confirme pas sa validité ou son attribution
(?:\+39)?[\s-]?(?:0\d{1,4}|3\d{2})[\s-]?\d{6,8}
Le test utilise JavaScript RegExp. Les syntaxes Python comme (?P<name>...) et re.VERBOSE doivent être testées en Python. Les motifs prêts illustrent des formats, pas une validation complète.
Utilisez Imprimer PDF. La version imprimable comprend toutes les commandes et les exemples, même dans les sections masquées par la recherche.
Oui. Servez les fichiers statiques avec un serveur HTTP local. Recherche, filtres et copie fonctionnent dans le navigateur ; le test Regex nécessite un contexte HTTP autorisant les workers.