web-dev-qa-db-fra.com

C # Regex pour correspondre à une chaîne qui ne contient pas une certaine chaîne?

Je veux faire correspondre n'importe quelle chaîne qui pas contient la chaîne "DontMatchThis".

Quel est le regex?

25
Shaul Behr

essaye ça:

^(?!.*DontMatchThis).*$
49
Kamarey

L'expression régulière pour correspondre à une chaîne qui ne contient pas un certain modèle est

(?s)^(?!.*DontMatchThis).*$

Si vous utilisez le modèle sans le (?s) (qui est une version en ligne du RegexOptions.Singleline drapeau qui fait . correspond à une nouvelle ligne LF ainsi que tous les autres caractères), le DontMatchThis ne sera recherché que sur la première ligne, et uniquement une chaîne sans LF seront associés à .*.

Détails du modèle :

  • (?s) - un modificateur DOTALL/Singleline faisant . correspond à n'importe quel caractère
  • ^ - début de l'ancre de chaîne
  • (?!.*DontMatchThis) - un lookahead négatif vérifiant s'il y a 0 ou plusieurs caractères (correspondant à _ .* sous-modèle - [~ # ~] note [~ # ~] un paresseux .*? la version (en faisant correspondre le moins de caractères possible avant la prochaine correspondance de sous-modèle) pourrait faire le travail plus rapidement si DontMatchThis est attendu plus près du début de la chaîne) suivie de DontMatchThis
  • .* - zéro ou plusieurs caractères, autant que possible, jusqu'à
  • $ - la fin de la chaîne (voir Caractères d'ancrage: Dollar ($)).
23
Wiktor Stribiżew