Vous pouvez utiliser des classes de caractères négatives pour exclure certains caractères: par exemple [^abcde], correspondra à tout sauf aux caractères a, b, c, d, e.
Au lieu de spécifier tous les caractères littéralement, vous pouvez utiliser des raccourcis à l' intérieur des classes de caractères: [\w](minuscules) correspondra à n'importe quel «caractère de mot» (lettre, chiffres et trait de soulignement), [\W](majuscule) correspondra à tout sauf aux caractères de mot; de même, [\d]correspondra aux chiffres 0-9 tandis que [\D]correspondra à tout sauf aux chiffres 0-9, et ainsi de suite.
Il y a deux façons de dire «ne correspondent pas»: des plages de caractères et une avant / arrière négative de largeur zéro.
L'ancien: ne correspondent pas a, b, cou 0:[^a-c0]
Ce dernier: correspond à n'importe quelle chaîne de trois lettres sauf fooet bar:
(?!foo|bar).{3}
ou
.{3}(?<!foo|bar)
En outre, une correction pour vous: *, ?et +ne correspond pas à quoi que ce soit. Ce sont des opérateurs de répétition et suivent toujours un opérateur correspondant. Ainsi, des a+moyens correspondent à un ou plusieurs a, des [a-c0]+moyens correspondent à un ou plusieurs a, b, cou 0, tout [^a-c0]+correspondrait à un ou plusieurs de tout ce qui n'a pas été a, b, cou 0.
Réponses:
Vous pouvez utiliser des classes de caractères négatives pour exclure certains caractères: par exemple
[^abcde]
, correspondra à tout sauf aux caractères a, b, c, d, e.Au lieu de spécifier tous les caractères littéralement, vous pouvez utiliser des raccourcis à l' intérieur des classes de caractères:
[\w]
(minuscules) correspondra à n'importe quel «caractère de mot» (lettre, chiffres et trait de soulignement),[\W]
(majuscule) correspondra à tout sauf aux caractères de mot; de même,[\d]
correspondra aux chiffres 0-9 tandis que[\D]
correspondra à tout sauf aux chiffres 0-9, et ainsi de suite.Si vous utilisez PHP, vous pouvez consulter la documentation des classes de caractères regex .
la source
Il y a deux façons de dire «ne correspondent pas»: des plages de caractères et une avant / arrière négative de largeur zéro.
L'ancien: ne correspondent pas
a
,b
,c
ou0
:[^a-c0]
Ce dernier: correspond à n'importe quelle chaîne de trois lettres sauf
foo
etbar
:(?!foo|bar).{3}
ou
.{3}(?<!foo|bar)
En outre, une correction pour vous:
*
,?
et+
ne correspond pas à quoi que ce soit. Ce sont des opérateurs de répétition et suivent toujours un opérateur correspondant. Ainsi, desa+
moyens correspondent à un ou plusieursa
, des[a-c0]+
moyens correspondent à un ou plusieursa
,b
,c
ou0
, tout[^a-c0]+
correspondrait à un ou plusieurs de tout ce qui n'a pas étéa
,b
,c
ou0
.la source
^((?!foo).)+$
Correspond à n'importe quelle ligne ne contenant pas foo regex101.com/r/z6a65l/4[^]
(entre [] ) est la négation dans une expression régulière alors que^
est "début de chaîne"[^a-z]
correspond à tout caractère unique qui ne va pas de "a" à "z"^[a-z]
signifie que la chaîne commence par "a" à "z"Référence
la source
^
utilisé au début d'une plage de caractères, ou assertions lookahead / lookbehind négatifs.>>> re.match('[^f]', 'foo') >>> re.match('[^f]', 'bar') <_sre.SRE_Match object at 0x7f8b102ad6b0> >>> re.match('(?!foo)...', 'foo') >>> re.match('(?!foo)...', 'bar') <_sre.SRE_Match object at 0x7f8b0fe70780>
la source
?!
dans les 2 derniers exemples ou pouvez-vous simplement l'utiliser!
seul? Que fait?
-il??
de pour dire que c'est une extension. D'autres moteurs de regex peuvent avoir leurs propres règles.