Je veux une expression qui échoue lorsqu'elle rencontre des mots tels que "boon.ini" et "http". Le but serait de prendre cette expression et de pouvoir la construire pour n'importe quel ensemble de mots-clés.
Réponses
Trop de publicités?^(?:(?!boon\.ini|http).)*$\r?\n?
(extrait de RegexBuddy ) correspondra à toute ligne qui ne contient pas boon.ini et/ou http. C'est ce que vous vouliez ?
Une expression alternative qui pourrait être utilisée :
^(?!.*IgnoreMe).*$
^
= indique le début de la ligne$
= indique la fin de la ligne(?! Expression)
= indique une correspondance négative de type look ahead de largeur zéro sur l'expression
El ^
à l'avant est nécessaire, sinon, lors de l'évaluation, le regard négatif vers l'avant pourrait partir de quelque part à l'intérieur/au delà du texte "IgnoreMe" - et faire une correspondance là où vous ne le souhaitez pas.
Par exemple, si vous utilisez le regex :
(?!.*IgnoreMe).*$
Avec l'entrée "Hello IgnoreMe Please", cela donnera quelque chose comme : "gnoreMe Please" car l'anticipation négative trouve qu'il n'y a pas de chaîne complète 'IgnoreMe' après le 'I'.
Plutôt que de nier le résultat dans l'expression, vous devez le faire dans votre code. De cette façon, l'expression devient assez simple.
\b(boon\.ini|http)\b
Je reviendrais true
si boon.ini ou http se trouvait quelque part dans votre chaîne. Il ne correspondra pas à des mots tels que httpd ou httpxyzzy en raison de l'utilisation de l'option \b
ou les limites des mots. Si vous le souhaitez, vous pouvez les supprimer et le moteur de recherche les prendra en compte également. Pour ajouter d'autres mots-clés, il suffit d'ajouter d'autres tuyaux.
\b(boon\.ini|http|foo|bar)\b