Regex n'est pas égal à string

Je me tape la tête contre un mur avec une expression régulière. J'essaie de définir une expression qui exclut exactement ce texte 'System' (insensible à la casse), mais peut contenir le mot "Système" fournissant ce n'est pas seulement cela.

Exemples:

  • Système = = invalide
  • SYSTÈME = = INVALIDE
  • Système = = invalide
  • système = = invalide
  • Système asd = = valide
  • Système asd asd = = valide
  • Système asd = = valide
  • tsa Système == Valide
  • tsa == Valide
23
demandé sur Kieron 2010-06-03 13:26:40

3 réponses

Essayez ceci:

^(?!system$)

Ou ceci pour correspondre à la ligne entière:

^(?!system$).*$

La regex a une apparence négative à son début, ce qui ne correspond pas si "system" est la chaîne entière.

42
répondu Kobi 2010-06-03 09:28:03

Rejeter s'il correspond à ^system$ (Assurez-vous que l'indicateur i est activé).

4
répondu Amarghosh 2010-06-03 09:29:36
^$|^.{1-5}$|.{7}|^[^s]|^.[^y]|^..[^s]|^...[^t]|[^e].$|[^m]$ 

Mais utilisez la réponse d'amarghosh si vous le pouvez.

(mis à jour selon la suggestion ci-dessous)

1
répondu Steve Bennett 2010-06-03 22:21:07