2010-06-03 7 views
3

Est-il possible d'écrire une règle de regexp dans "une ligne" qui dit: ni A ni B.Ni-ni oneline REGEXP

Par exemple:

String must contain NEITHER "foo" NOR "bar".

Pourquoi une ligne? Parce que l'outil de filtrage que j'utilise n'accepte qu'une seule ligne ... J'ai essayé des choses comme (.*foo.*){0}(.*bar.*){0} sans trop de chance.

Répondre

7
^(?!.*(foo|bar)).*$ 
+0

Que signifie "?!" signifier? – Simon

+2

@Simon: Lookahead négatif. – kennytm

+1

@ Look négatif anticipé de Simon: '(?! REGEX_1) REGEX_2' échouera si' REGEX_1' correspond, mais ne consommera aucun caractère de sorte que la correspondance de 'REGEX_2' commencera au même endroit. Il y a un look-ahead positif '(? = REGEX_1) REGEX_2' et leurs contreparties look-behind. Lire http://www.regular-expressions.info/lookaround.html – Amarghosh