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 :

Problème sur les Regexs


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    351
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 351
    Par défaut Problème sur les Regexs
    Voila j'ai un dico avec 360k mots:

    Et je veux pouvoir tester avec chaque mot si l'on trouve le motif du mot dans mon pattern . Et si oui ou commence le motif du mot.

    ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Pattern p= Pattern.compile(".br.c....ba....");
    Matcher m = p.matcher("broc");
    m.find();
    m= p.matcher("ballon");
    m.find();
    Sauf que la c'est l'inverse de ce que je veux faire moi ce que je voudrais c'est ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Pattern p1=  Pattern.compile("broc");
    Pattern p2=  Pattern.compile("ballon");
    Matcher m = p1.matcher(".br.c.....ba...");
    m.find(); 
    m=p2..matcher(".br.c.....ba...");
    m.find()
    Problème c'est que la chaine passée en paramètre pour lui ce sont des points
    et p.matcher(Pattern mot) ca existe pas snif.

    Je pense qu'il doit bien avoir une solution mais je ne vois pas comment faire.

  2. #2
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    Bonjour,
    ... veux tu reformuler s'il te plaît ?


  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    351
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 351
    Par défaut
    En gros j'ai une liste de mot par exemple: {ballon, broc,ect...} (dans mon appli la liste de mot est de 360 000).

    je veux savoir si cette chaine de caractere existe dans mon pattern:

    mon pattern c'est ca : ".br.c....ba...." sachant que le '.' représente n'importe quel caractère, en faite il vaudrait mieux [a-z] enfin c'est le même principe.

    Donc la je voudrais que ca me dise oui la chaine ballon existe dans le pattern , elle commence à l'index 9. Ou encore la chaine broc existe bien dans le pattern elle commence a l'index 1.

    Voila je sais pas si c'est plus clair.

  4. #4
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    Ok,
    Là, je ne crois pas qu'il y'a une solution efficace (à moins d'extraire toutes les séquences possibles du pattern et de parcourir les 360k mots pour les vérifier avec chaque sous-pattern ... les possibilités sont énormes).
    A moins donc que tu trouves un moyen efficace de scinder ton pattern.
    Au fait, d'où vient ce pattern (bizarroïde) ?

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    351
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 351
    Par défaut
    bah c'est une ligne d'un plateau de scrabble , ca pourrait etre n'importe quelle lettre avec des espaces .

  6. #6
    Membre émérite Avatar de Gardyen
    Homme Profil pro
    Bio informaticien
    Inscrit en
    Août 2005
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bio informaticien

    Informations forums :
    Inscription : Août 2005
    Messages : 637
    Par défaut
    bon c'est pas très joli et ça suppose que tu parcours tes 360k mots pour chaque ligne... mais bon c'est peut-être un début

    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
     
    String[] patterns = {"([b\\.][r\\.][o\\.][s\\.])",
        "([b\\.][r\\.][o\\.][c\\.])",
        "([b\\.][a\\.][l\\.][l\\.][o\\.][n\\.])",
        "([b\\.][a\\.][l\\.][l\\.][o\\.][n\\.][s\\.])"};
    String line = ".br.c.....ba....";
    for (String pattern : patterns) {
        Pattern p = Pattern.compile(pattern);
        Matcher m = p.matcher(line);
        if (m.find()){
            if (m.groupCount() > 0){
                for (int i = 1; i <= m.groupCount(); i++) {
                   // Mais reste le probleme des mots uniquement composes de points...
                        if (m.group(i).replaceAll("\\.", "").length() > 0){
                            System.out.println("pattern "+pattern+" "+m.group(i)+", start: "+m.start(i)+", end: "+m.end(i));
                        }
                   }
            }
        }
    }

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    351
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 351
    Par défaut
    Oui merci gardyen c'est un bon début ca !! , trop bonne idée , j'y aurai pas pensé . Merci

Discussions similaires

  1. [RegEx] Problème avec les regex
    Par dragon noir dans le forum Langage
    Réponses: 3
    Dernier message: 24/07/2006, 11h26
  2. Problème sur les dates
    Par Littlecoda dans le forum Oracle
    Réponses: 7
    Dernier message: 07/07/2006, 11h39
  3. problème sur les threads et les sémaphores
    Par ramislebob dans le forum Windows
    Réponses: 1
    Dernier message: 29/06/2006, 11h52
  4. Réponses: 6
    Dernier message: 31/03/2006, 17h05
  5. j'ai un problème sur les hinstances
    Par ramaro dans le forum C++
    Réponses: 9
    Dernier message: 26/02/2006, 14h32

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