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

API standards et tierces Java Discussion :

Apache Regex need help


Sujet :

API standards et tierces Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de nathieb
    Homme Profil pro
    DevOps
    Inscrit en
    Mai 2004
    Messages
    1 058
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : DevOps
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 058
    Par défaut Apache Regex need help
    Bonjour,

    Voila, je dois utiliser une expression rationnelle pour identifier des données non valides.
    Cependant je galère en Java. J'ai fais des test dans notepad, mais qaund je l'écris en Java
    cela ne fonctionne pas
    Je veux détecter les
    * # & ^ / \ < > @ % ) ( [ ]

    qui pourrait être dans un champ
    donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public static boolean checkVariable(String variable){
            boolean check=false;
            if(!variable.equals(null)){
                RE re = new RE("[\\<\\>\\&\\^\\(\\),;:]|[\\*]");
                check = re.match(variable);
            }
            return check;
        }
    mais impossible de détecter l' *

    pourtant j'ai des champs TITI *
    TOTO ****

    j'utilise jakarta-regexp-1.5.jar
    Bon j'avoue je viens d'achater un livre sur les regex, mais entre théorie et pratique
    parfois c'est la confusion, surtout que j'injecte le tout dans Oracle , imbibé d'un PL SQL
    bref pas opaque le truc

    Merci d'avance
    olivier

  2. #2
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Par défaut
    Alors pour résumer ce que tu veux matcher avec ta regex, ce sont toutes les chaines de caractère contenant un des caractères
    * # & ^ / \ < > @ % ) ( [ ]

    Donc en fait tu veux détecter n'importe lequel de ces caractères précédé et suivi de 0 ou n autres caractères.

    La première étape est de construire la classe représentant la correspondance avec tes caractères recherchés. Pour ça on utilise les crochets :
    [*#&^/\<>@%)([]]

    La deuxième étape est que parmi tes caractères recherchés, plusieurs sont des méta caractères utilisés par les expressions régulière, il faut donc les échapper.
    Pour éviter de multiplier les "\" on vas utiliser les séquences d'échappement \Q et \E (cf la javadoc de la classe Pattern) :
    [\Q*#&^/\<>@%)([]\E]

    À ce stade là, l'expression régulière signifie "un caractère parmi * # & ^ / \ < > @ % ) ( [ ]".
    Il faut maintenant ajouter "précéder et suivi de 0 ou n caractères". Pour cela on rajoute .* au début et à la fin de notre regex:
    .*[\Q*#&^/\<>@%)([]\E].*

    Enfin il ne reste plus qu'à mettre cette regex dans une chaîne java en n'oubliant pas d'échapper les "\" en les doublant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String regex = ".*[\\Q*#&^/\\<>@%)([]\\E].*";
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  3. #3
    Membre Expert Avatar de nathieb
    Homme Profil pro
    DevOps
    Inscrit en
    Mai 2004
    Messages
    1 058
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : DevOps
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 058
    Par défaut Merci encore
    Bonjour,

    Ok bien compris, j'y suis presque.

    Olivier

  4. #4
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 690
    Par défaut
    Juste une question, y a il une raison particulière pour que tu utilises jakarta-regexp ?
    Depuis la version 1.4, l'API java inclus la gestion des expression régulières, sans rien a rajouter.

  5. #5
    Membre Expert Avatar de nathieb
    Homme Profil pro
    DevOps
    Inscrit en
    Mai 2004
    Messages
    1 058
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : DevOps
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 058
    Par défaut oui il y a une raison
    Bonjour,

    Je développe une procédure stockée Oracle 9i qui mappe du java .
    C'est possible dans Oracle comme dans postgresql, le pb c'est que la JVM
    d'oracle en 9i utilise 1.3, donc pas de regex, pas possible de le faire
    en PL SQL, car elles apparaissent avec la 11G je crois. Donc
    injection de Apache-regex il pouf le deal

    Maintenance quand tu nous tiens ...

    olivier

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

Discussions similaires

  1. J'ai un probleme tres coriace I need help
    Par red1kissi dans le forum Bases de données
    Réponses: 7
    Dernier message: 16/06/2006, 08h29
  2. Panier virtuel need Help!!
    Par louli_computing dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 7
    Dernier message: 12/06/2006, 13h53
  3. Récupération xml récalcitrante edit : need help
    Par InDaWinD dans le forum Général Python
    Réponses: 3
    Dernier message: 14/04/2006, 11h28
  4. Need help pour installer upgrade linux Debian
    Par jejerome dans le forum Administration système
    Réponses: 2
    Dernier message: 26/03/2006, 19h26
  5. need help pour : boucle & expression régulière
    Par Fabouney dans le forum Langage
    Réponses: 5
    Dernier message: 05/08/2005, 02h22

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