Avec PCRE, comment pouvez-vous construire une expression qui ne correspondra que si une chaîne est pas trouvée.
Si j'utilisais grep (ce que je ne suis pas), je voudrais l'option -v.
Un exemple plus concret: je veux que mon expression rationnelle corresponde à si la chaîne foo
est pas dans la chaîne. Donc, cela correspondrait à bar
mais pas à foobar
.
D'accord, j'ai affiné mon expression régulière en fonction de la solution que vous avez trouvée (qui correspond à tort aux chaînes commençant par "test").
^((?!foo).)*$
Cette expression régulière ne correspondra qu'aux chaînes qui ne contiennent pas foo. Le premier lookahead refusera les chaînes commençant par 'foo', et le second s'assurera que foo ne se trouve pas ailleurs dans la chaîne.
Sur la base de la réponse de Daniel, je pense que j'ai quelque chose qui fonctionne:
^(.(?!test))*$
La clé est que vous devez faire l'affirmation négative sur chaque caractère de la chaîne
J'ai déjà répondu à cette question pour quelqu'un, voir ces liens:
C'est en effet presque un doublon. Je suppose que l'expression régulière que vous recherchez est
(?! foo). *