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

Langage Java Discussion :

matcher.end en récursif


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de totoche
    Inscrit en
    Janvier 2004
    Messages
    1 090
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 090
    Par défaut matcher.end en récursif
    Bonjour,
    Je parcours un fichier afin d'extraire puis modifier certaines des valeurs
    voici l'exemple d'une ligne que je dois modifier :
    <li><b><a href="#tss"><monTag:message bundle="legendes" key="menu.rech.a" /></b></a> : Option accessible en fonction du paramétrage. Accès... l'index du champ <monTag:message bundle="paramBase" key="test.0" />
    Le code ci dessous fonctionne (Merci Uther), mais si j'ai plus de 2 occurrences, le seul moyen est-il de faire une récursive ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
     static final Pattern PATTERN = Pattern.compile("<monTag:message .*? />");
        static Matcher matcher;
     
        {
            try {
                File file = new File("c:\\Temp\\file.txt");
                BufferedReader reader = new BufferedReader(new FileReader(file));
                String line = "", oldtext = "";
     
                int i = 0 ;
                while ((line = reader.readLine()) != null) {
     
                   matcher = PATTERN.matcher(line);
                   if(matcher.find()){
                       //transmettre la ligne:
                       System.out.println ("trouvé : " +i + " -- DEB ="+ matcher.start() + " -- FIN =" +matcher.end());
                       System.out.println (line);
     
                       if(matcher.find(matcher.end()));{
                       System.out.println ("trouvé : " +i + " -- DEB ="+ matcher.start() + " -- FIN =" +matcher.end());
                       System.out.println (line);}
     
                       i++;                   
                   }

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Il suffit de remplacer ton if par un while :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
                   while (matcher.find()){
                       //transmettre la ligne:
                       System.out.println ("trouvé : " +i + " -- DEB ="+ matcher.start() + " -- FIN =" +matcher.end());
                       System.out.println (line);
     
                       i++;                   
                   }
    a++

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

Discussions similaires

  1. [jakarta][regex]Matcher mot en entier.
    Par thibaut dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 26/05/2004, 13h33
  2. Réponses: 2
    Dernier message: 15/04/2004, 15h44
  3. Erreur unexpected end of file
    Par snoop dans le forum Linux
    Réponses: 6
    Dernier message: 22/03/2004, 10h37
  4. questions sur le if then end if;
    Par ghostlord79 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 19/02/2004, 16h35
  5. Front End graphique pour GDB sous windows
    Par KORTA dans le forum GDB
    Réponses: 8
    Dernier message: 20/08/2003, 09h52

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