Bonjour,
Je suis en train de devenir fou mais je ne trouve pas la possibilité d'exclure un ensemble de caractères en regexp pure.
[^deb] : exclue les caractères d, e, b.
Mais n'y a t'il pas un moyen d'exclure que les caractères "d" suivi de "e" suivi de "b", enfin bref d'exclure la chaîne deb ?
(à part [^d][^e][^b])
Merci d'avance pour vos réponses
# meuh
Posté par gc (site web personnel) . Évalué à 3.
"(?!pattern)"
A zero-width negative look-ahead assertion. For example "/foo(?!bar)/" matches any occurrence of "foo" that isn't followed by "bar".
la plupart des moteur de regexp pas trop débiles disposent de cette extension.
# Commentaire supprimé
Posté par Anonyme . Évalué à 3.
Ce commentaire a été supprimé par l’équipe de modération.
# quelle regex ?
Posté par Hardy Damien . Évalué à 4.
cf la doc de perl (motif etendu) : http://www.mongueurs.net/perlfr/perlre.html
Dam
# merci pour le test avant négatif
Posté par Jean . Évalué à 1.
==
%s ls |grep -E ".*(?!deb).*"
zsh: event not found: deb).
idem pour grep -P (mode perl)
==
Je pense que c'est tout de suite interprété par le shell, mais d'ailleurs les grep modernes ne supporte pas les (? de toute façon (excepté l'option perl)
[^] # Re: merci pour le test avant négatif
Posté par netsurfeur . Évalué à 3.
ls | grep -v deb
devrait répondre à ton problème.
PS: Si tu ne veux pas que le shell n'interprète pas les métacaractères, il faut utiliser la quote simple et non le guillemet (ls |grep -E '.*(?!deb).*')
[^] # Re: merci pour le test avant négatif
Posté par netsurfeur . Évalué à 2.
Il fallait lire:
PS: Si tu ne veux pas que le shell interprète les métacaractères, il faut utiliser la quote simple et non le guillemet (ls |grep -E '.*(?!deb).*')
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.