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 :

utiliser un regex?


Sujet :

Langage Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5
    Points : 5
    Points
    5
    Par défaut utiliser un regex?
    Bonjour a tous ,
    J'aimerai faire une fonction proche d'une requête SQL.
    Je voudrai passer en paramètre à cette fonction une chaîne de caractère qui contient des '?' et/ou une '*'.
    La fonction me renverrai alors toutes les chaines (stockées dans une liste) vérifiant les conditions.
    par exemple ?? me renverrai toutes les chaines de deux lettres.
    ???a -->les chaines de 4 lettres terminées par a
    *-->toutes les chaines
    a*-->toutes les chaines commençant par a
    ...
    Est ce que je dois créer cette fonction en comparant caractère par caractère ma chaine en paramètre avec les chaines de ma liste ou est ce que les regex sont adaptés à cette situation ?

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    352
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 352
    Points : 445
    Points
    445
    Par défaut
    Comme tu l'as pressenti, l'utilisation de regex semble tout indiqué dans ton cas. D'autant que le code de comparaison sera beaucoup plus générique, et que développer toi-même une fonction ou librairie répondant à tous les cas rique d'être ardu.

    Personnellement j'utilise le poteur de Regex Apache (Avalon) pour des raisons de compatibilité avec le JDK 1.3, mais un moteur de regexp est inclus dans la JVM à partir de la 1.4.

    Par contre tu n'auras pas le choix de la syntaxe, il te faudra écrire des expressions régulières valide. Mais si les besoins se limites à l'utilisation des wildcards '*' et '?' tu peux très bien autoriser une saisie avec celles-ci et faire un pré-processing de l'expression pour la mettre en conformité avec les regexp.

    Jacques Desmazières

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    ok, merci de la réponse,
    Cependant, est ce que vous pourriez m'expliquer simplement l'utilisation des regex (déclaration, manipulation des méta caractères) car j'ai bien trouvé le tutoriel d'Hugo ETIEVANT ici même mais j'avoue que je n'ai pas tout à fait compris.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    352
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 352
    Points : 445
    Points
    445
    Par défaut
    Je n'ai jamais utilisé l'API du Jdk 1.4, mais le tutoriel est plutôt bien fait d'après ce que j'en ai vu, mais il est complet donc peut être un peu ardu lors d'une première approche.

    Une expression régulière correspond à un "Pattern" appliqué à une chaine de caractère. Une fois ce pattern appliqué à la chaine, on peut alors soit vérifier la concordance, soit faire de l'extraction de sous chaine soit encore faire du remplacement.

    Donc dans un premier temps : il faut comprendre les expressions régulières et apprendre comment elles fonctionnent, indépendament de Java. J'ai vu sur le site, si je ne me trompe pas, un lien vers un outil permettant de tester des expressions régulières. Personnellement j'utilise Regexp Coach.

    Ensuite il faut implémenter cela en Java. Pour cela il faut procéder en 3 phases (voir page 20 et suivantes du tutoriel):
    1 - compiler l'expression régulière pour instancier un Pattern (Pattern.compile)
    2 - appliquer le pattern à la chaine de caractères (Pattern.matcher)
    3 - dans ton cas, vérifier qu'il y a effectivement un matching (Matcher.matches)

    Voilà le tour est joué en 3 lignes de code.

    Si tu choisis d'utiliser tes caractères '*' et '?', il te faudra juste les remplacer par leur correspondance en expression régulières ('[.]*' et '.'), en faisant quand même attention aux caractères de contrôle des regexp ( '(', '[', ...)

    Bien que je n'aie que survolé la question, j'espère que cela t'aidera

    Jacques Desmazières

Discussions similaires

  1. [Langage C] Utilisation bibliothèque "regex.h"
    Par bit_o dans le forum Linux
    Réponses: 6
    Dernier message: 12/04/2007, 17h06
  2. Réponses: 2
    Dernier message: 10/04/2007, 11h46
  3. utilisation de regex
    Par mhamedbj dans le forum Langage
    Réponses: 4
    Dernier message: 27/03/2007, 17h44
  4. Réponses: 9
    Dernier message: 30/11/2005, 18h18
  5. Utilisation de regex : TRegExpr
    Par trakiss dans le forum Langage
    Réponses: 2
    Dernier message: 22/06/2005, 23h07

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