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 :

autre alternative au regexp


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 46
    Par défaut autre alternative au regexp
    j'etulise les regexp ça marche bien, mais pour extraire un text d'une certaine taille les regexp montrent une limite

    import org.apache.regexp.RE;
    RE r = null;
    String text = "ABDBbghghghdgnjgfjfghjhgjhghjkghjhhghhjj"
    // si le text attient une certaine taille "40 lignes", StackOverflowError est genèré.
    String regex = "([a-zA-Z \r\n]{1,})"; //par exemple

    try{
    r = new RE(regex,RE.MATCH_MULTILINE);
    Boolean bool= r.match(text);

    if(bool)
    {
    String str="";
    for (int i = 0; i < r.getParenCount(); i++)
    {
    if(r.getParenLength(i)>0)
    {
    System.out.println(r.getParen(i));
    }
    else
    {
    System.out.println("NO MATCH");
    }
    }//end for
    }//end if
    else
    {
    Form.Groups.addItem("Failed match");
    }
    }catch(RESyntaxException REex) {Form.Groups.addItem(REex);}
    catch(java.lang.StackOverflowError st){System.out.println("st "+st);}
    catch(java.lang.InternalError ec){System.out.println("ec "+ec);}
    catch(java.lang.StringIndexOutOfBoundsException in){System.out.println("in "+in);}
    try{
    this.finalize();
    }catch(java.lang.Throwable g){System.out.println("g "+g);}
    }
    }
    je ne sais pas s'il y'a une alternative au regexp , oui s'il y'a une solution pour travailler avec regexp sur des textes costaux, je n'ai pas trouvé de solution sur le net

    jdk1.5 jakarta-regexp1.4
    merci d'avance

  2. #2
    Membre chevronné

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2002
    Messages
    346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2002
    Messages : 346
    Par défaut
    Va voir du coté de Jakarta ORO, il y a un framework de regex trés austaud, basé sur des regex type PEARL qui sont compilé avant utilisation ce qui assure une grande rapidité et une grande robustesse (package org.apache.oro.text.regex)

    URL : http://jakarta.apache.org/oro/index.html

    Leur utilisation est un peu plus compliqué ... mais ça marche trés bien

  3. #3
    Membre émérite Avatar de remika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    806
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 806
    Par défaut
    la classe Scanner pourrait peut-être te servir ?

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 46
    Par défaut
    merci pour tous vous m'avez beaucoup aider
    voila ce code fait la même chose que celui de dessus mais c'est plus rapide et plus costaux
    import org.apache.oro.text.regex.*;


    PatternMatcher matcher;
    PatternCompiler compiler;
    Pattern pattern;
    PatternMatcherInput input;
    MatchResult result;
    compiler = new Perl5Compiler();
    matcher = new Perl5Matcher();
    try {
    pattern = compiler.compile(somePatternString);
    } catch(MalformedPatternException e) {
    System.err.println("Bad pattern.");
    System.err.println(e.getMessage());
    return;
    }
    input = new PatternMatcherInput(text);
    if(matcher.contains(input, pattern))
    {
    for(int i=0;i<matcher.getMatch().groups();i++){
    if (matcher.getMatch().group(i).length() > 0) {

    System.out.println(matcher.getMatch().group(i) + " ->" + i);
    }
    else
    {
    System.out.println("NO MATCH");
    }
    }

    // Perform whatever processing on the result you want.
    }
    else
    {System.out.println("NO MATCH");
    }

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

Discussions similaires

  1. Autre alternative à $_SERVER['HTTP_REFERER']
    Par Aspic dans le forum Langage
    Réponses: 18
    Dernier message: 25/06/2011, 13h52
  2. autres alternative que javascript
    Par redoran dans le forum Langage
    Réponses: 2
    Dernier message: 17/02/2011, 15h57
  3. autre alternative que getChildAt() ?
    Par NoArgl dans le forum ActionScript 3
    Réponses: 2
    Dernier message: 07/11/2009, 10h05
  4. Réponses: 1
    Dernier message: 26/03/2009, 17h17
  5. autres alternatives a MS PowerPoint
    Par mhamedbj dans le forum Powerpoint
    Réponses: 12
    Dernier message: 21/06/2007, 16h52

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