7
votes

Comment rejetez-vous une chaîne si précédée d'une autre chaîne à l'aide de Standard Posix Regex?

J'ai une regex qui trouve des erreurs dans un journal pour moi:

/(?!Read exception encountered)(exception|error)/i


2 commentaires

Quel langage de programmation?


Je ne suis pas sûr. J'utilise SITESCOPE. Regex standard?


4 Réponses :


4
votes

Vous voulez utiliser "Latette à looke négatif" (si elle est prise en charge par votre moteur de regex.) Vous dites efficacement "Je veux faire correspondre X Patern, tant que cet autre motif ne le précède pas."

Dans votre exemple , il ressemble à ceci: xxx

Voir plus sur les fonctionnalités "RECHERNAUX" ici .


2 commentaires

L'expression (? pourrait être accroché sur des cas de bord éventuels tels que Thread Exception lors de l'exécution du rapport


Il semble que SITESCOPE ne supporte pas la photo négative, mais toujours +1 pour votre aide - c'est une solution probable pour les autres qui trouvent cette question.



0
votes

Peut-être que le caractère "début de ligne" est ce dont vous avez besoin. Je suppose que chaque ligne du journal ait "exception" ou "erreur". Donc, vous pourriez correspondre à

/^(RegexpForDateTimeGoesHere)(exception|error)/i


1 commentaires

Je ne sais pas que l'exception | Erreur suivra directement l'horodatage. Cela échouerait donc si le message était "(horodatage): oh enfer tout est en feu en raison d'une erreur"



1
votes

Si vous souhaitez rejeter la chaîne entière si la sous-chaîne Lecture exception rencontrée est dans la chaîne, je voudrais simplement utiliser un look négatif à venir, qui est supporté par la plupart des langues. < / p>

^ (?! [^ \ r \ n] *? \ Exception de pain rencontrée \ b) [^ \ r \ n] *? (Exception | Erreur)

Exemple en direct: http://www.rubular.com/r/cv7p9huvsi < / p>

Entrez la description de l'image ici


0 commentaires

1
votes

Essayez quelque chose comme ça / ([^ R] [^ e] [^ a] [^ d]) (exception | erreur) /


0 commentaires