IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Collection et Stream Java Discussion :

[REGEXP] Problème avec DotAll


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mars 2002
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mars 2002
    Messages : 192
    Par défaut [REGEXP] Problème avec DotAll
    Bonjour,

    J'ai un petit soucis sur l'écriture d'une Regexp multiligne.

    Je voudrais récupérer dans une chaine des blocks de données respectant un certain format, sachant que ces blocks sont multilignes.

    Voilà mon format d'entrée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    DEB-aaaaaaaaaaaaaaaaaaa
    bbbbbbbbbbbbbbbbbbbbbbb
    ccccccccccccccccccccccc
     
    DEB-aaaaaaaaaaaaaaaaaaa
    bbbbbbbbbbbbbbbbbbbbbbb
    ccccccccccccccccccccccc
     
    DEB-aaaaaaaaaaaaaaaaaaa
    bbbbbbbbbbbbbbbbbbbbbbb
    ccccccccccccccccccccccc
    Voilà ensuite la regexp que j'exécute
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (?s)(?:(DEB.*)(?:\r\n){2})
    . Celle-ci comme on s'en doute "matche" toute mes données.

    Ce que je voudrais c'est récupérer en block ; un block qui commence par DEB- jusqu'à la prochaine ligne vide. Je me suis donc dit qu'il fallait que ma regexp s'arrète dès que possible, j'ai donc tenté d'utiliser un quantificateur réticent (reluctent) pour que la regexp s'arrète dès qu'un match est trouvé, d'où la regexp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (?s)(?:(DEB.*)(?:\r\n){2})+?
    qui ne fonctionne malheureusement pas.

    J'ai beau avoir essayé de modifier ma regexp dans tous les sens, j'avoue ne pas y arriver. Je ne sais pas si celà vient de l'utilisation du DotAll (?s) ou pas mais je crois que j'ai besoin d'un coup de main.

    Merci d'avance.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mars 2002
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mars 2002
    Messages : 192
    Par défaut
    Bon après m'être plongé attentivement dans plusieurs documentations sur les REGEXP et l'utilisation des quantificateurs voici la réponse qui je l'espère servira à d'autres...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (?s)(?:(DEB.+?)(?:\r\n){2})

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème avec regexp
    Par Eye4eye dans le forum Général Python
    Réponses: 5
    Dernier message: 13/05/2008, 10h32
  2. Petit problème avec une regexp
    Par Beleg dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 25/02/2008, 17h46
  3. Problème avec des regexp
    Par Petitcodeur dans le forum Langage
    Réponses: 2
    Dernier message: 17/10/2006, 10h52
  4. [Regexp] Problème de réalisation avec les || (OU)
    Par omlip dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 16/10/2006, 10h35
  5. Gros problème avec regexp
    Par dmbsys dans le forum ASP
    Réponses: 6
    Dernier message: 29/04/2006, 16h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo