2010-06-01 5 views
3

Dans ce texte:regex aucun caractère

 
warning here 
there are several types of warnings 
in this string warning.gif 
at the end warning 
end of line warning 

Je veux correspondre à chaque warning sauf warning.gif.

Je n'arrive pas à inclure le dernier qui n'a aucun caractère (contrôle ou autre) après.

en utilisant warnings?[^\.] obtient ce que je veux, sauf pour le dernier avertissement (sur la dernière ligne). Je pense parce qu'il n'y a pas de caractère du tout après. Comment puis-je l'obtenir pour inclure celui-là?

+1

Quelle langue utilisez-vous? Tous les moteurs d'expressions régulières ne sont pas tous aussi puissants, et la syntaxe diffère entre les moteurs. –

Répondre

4

Si vous avez lookaheads négatives vous pouvez l'utiliser:

/warnings?(?!\.gif)/ 

Cela devrait fonctionner en Javascript.

+0

Je travaille en javascript regex. – iamnotmad

+0

Bonne nouvelle: Javascript a des hasards négatifs. –

+0

C'est le gagnant! Merci beaucoup! J'ai changé le ".gif" juste "." – iamnotmad

1

EDITED

J'ai complètement mal interprété la question. Mes excuses.

est ici une solution corrigée:

Alternatives peuvent se lier plus étroitement que le marqueur EOF.


fichier Exemple:

warning here 
there are several types of warnings 
in this string warning.gif 
at the end warning 
end of line warning 

script Exemple:

awk '/warnings?$|warnings?[[:space:]]/ { print }' /home/geocar/g.txt 

réponse originale (wrong):

Utilisation: /warnings?$/m - Notez que le « ? " signifie que le "s" est optionnel

+0

pour une raison quelconque, cela n'a pas attrapé l'avertissement sur la première ligne. – iamnotmad

+0

@iamnotmad: Vous avez quelque chose d'autre qui ne va pas avec votre programme. J'ai modifié mon post pour inclure un exemple que vous pouvez essayer vous-même. – geocar

+0

Cette regex ne correspond que si le mot est à la fin de la ligne, ce qui n'est pas toujours le cas. –

Questions connexes