*, ?, +les caractères signifient tous correspondent à ce caractère. Quel caractère signifie «ne correspond pas» à cela? Des exemples aideraient.
*, ?, +les caractères signifient tous correspondent à ce caractère. Quel caractère signifie «ne correspond pas» à cela? Des exemples aideraient.
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 .
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.
^((?!foo).)+$Correspond à n'importe quelle ligne ne contenant pas foo regex101.com/r/z6a65l/4
^ 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>
?!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.