Négatif regex Perl patron de la chaîne de match

J'ai cette regex:

if($string =~ m/^(Clinton|[^Bush]|Reagan)/i)
  {print "$string\n"};

Je veux correspondre avec Clinton et Reagan, mais pas Bush.

Ça ne fonctionne pas.

  • que faire si la chaîne commence avec aucun de ces mots?
  • Ne serait pas de correspondance Clinton ou Reagan déjà dire que vous n'êtes pas de correspondance pour Bush? Ou ne correspondant pas à de Brousse, vous permettront de match Clinton ou Reagan?
  • Parfois, la meilleure solution est d'éliminer la complexité en se divisant en deux expressions régulières. L'un positif, l'autre négatif.
InformationsquelleAutor joe | 2011-06-15