• [^] # Re: Autre manière de faire

    Posté par . En réponse au message Expression régulière. Évalué à 1. Dernière modification le 18 octobre 2013 à 22:18.

    Merci pour ta remarque, c'est intéressant cette différenciation lazy/greedy. Je ne m'étais jamais attardé là-dessus. C'est bien du lazy que je veux et on peut corriger ça en remplaçant * par *? :

    text = "plop\n<salut\nplop\n> plop>"
    #m = re.search('<salut(.|\\n)*>', text)
    m = re.search('<salut(.|\\n)*?>', text)

    Mais là où ça pose problème c'est la gestion du retour à la ligne, le '.' ne le matche pas et le \n ne semble pas vouloir être pris en compte dans la syntaxe avec les crochets. Je suis prêt à l'accepter comme ça, mais si quelqu'un pouvait me donner la raison j'aurai la satisfaction d'aller me coucher un peu moins idiot :-)

    Sinon j'ai mis le code en python parce que c'est plus facile à tester pour le lecteur du forum mais en fait je travaille sur du Java. Je n'avais pas fait gaffe que le comportement pouvait être différent.