Y a-t-il un opérateur NOT dans Regexes? Comme dans cette chaîne: "(2001) (asdf) (dasd1123_asd 21.01.2011 zqge)(dzqge) name (20019)"
Je veux supprimer tous les \([0-9a-zA-z _\.\-:]*\)
mais pas celui où il s'agit d'un an: (2001)
.
Donc, ce que l'expression rationnelle doit renvoyer doit être: (2001) name
.
NOTE: quelque chose comme \((?![\d]){4}[0-9a-zA-z _\.\-:]*\)
ne fonctionne pas pour moi (le (20019)
Correspond aussi ...)
Non, il n'y a pas d'opérateur direct ou non. Au moins, pas comme vous l'espérez.
Vous pouvez utiliser un préfixe négatif de largeur nulle, cependant:
\((?!2001)[0-9a-zA-z _\.\-:]*\)
Le (?!...)
partie signifie "ne correspond que si le texte suivant (d'où: lookahead) this ne le fait pas (donc: négatif) correspond à cela. Mais il ne consomme pas réellement les caractères auxquels il correspond (donc: largeur zéro) .
Il existe actuellement 4 combinaisons de lookarounds avec 2 axes:
Pas tout à fait, même si généralement vous pouvez utiliser une solution de contournement sur l’un des formulaires.
[^abc]
, Qui est caractère par caractère et non a
ou b
ou c
,a(?!b)
, qui est a
non suivi de b
(?<!a)b
, qui est b
pas précédé de a