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

avec Java Discussion :

Les expressions régulières


Sujet :

avec Java

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2012
    Messages : 133
    Points : 109
    Points
    109
    Par défaut Les expressions régulières
    Bonjour , je viens vous voir aujourd'hui car j'ai un petit problème avec une expression régulière et vu que je ne suis pas calé dans ce genre de domaine ...
    En fait j'ai une phrase "coucou toto" par exemple.

    J'aimerais réussir a ne prendre que le toto ! Mais je veux le prendre dans une expression régulière qui dit : tu prends tout sauf le coucou de début de phrase. J'ai essayé plusieurs choses en vain.
    [^coucou] n'a pas l'air de fonctionner donc je viens demander a des professionnel !

    Merci d'avance !

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    "prendre" ?

    Une expression régulière sert avant à dire si un texte est "valide" ou "invalide." Une expression régulière énonce des règles, auxquelles un texte peut répondre ou ne pas répondre.

    Donc elle peut dire si "coucou toto" répond à des règles ou n'y répond pas.
    Il n'y a rien à "prendre."

    ... Du moins au départ. Mais il est toujours possible, une fois qu'on a compris ça, d'utiliser les groupes de captures. Ils consistent à dire, "vérifie si le texte respecte bien mes règles. Et si oui, je voudrais extraire cette partie du texte."
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2012
    Messages : 133
    Points : 109
    Points
    109
    Par défaut
    Et bien, avec le matcher.group() j'arriver à récupérer le "coucou" car comme tu le dis je peux récupérer la partie de phrase qui correspond au matcher.find().
    Mais je me disais qu'il était peut-être possible de récuperer la partie qui ne correspond pas.

    Je m'explique, dans mon application j'aurais des phrases de la forme "coucou toto" , "qui est toto" , "pourquoi toto", où le toto peut être remplacé par n'importe quel nom/prénom. J'aimerais récupérer son nom/prénom par une expression régulière mais je ne sais pas comment m'y prendre.

    Merci.

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Un truc genre "coucou (.*)" non ?

    Et il faudra utiliser group(1) au lieu de group(), pour ne prendre que ce qui est entre parenthèses.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre régulier
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2012
    Messages : 133
    Points : 109
    Points
    109
    Par défaut
    Ouais c'est ce genre d'expressions que j'utilise "une phrase fixe (.*)", et c'est ce qu'il y a entre parenthèse que je voudrais récupérer, tout en testant le match.

    Et je ne connaissait pas cette surcharge de group() avec un int.
    Je vais regarder la documentation et tester tout ça ce soir.

    Merci pour tes éclaircissements thelvin !

  6. #6
    Membre régulier
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2012
    Messages : 133
    Points : 109
    Points
    109
    Par défaut
    Je reviens avec un autre problème sur les expressions régulières qui me prend le chou.
    J'ai beau testé et regardé des tuto et cours sur le net il y a toujours quelques chose que je pige pas.

    J'aimerais matcher la phrase suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Il fait chaud à X, car il y a du soleil depuis Y
    Ceci est une phrase que je viens d'inventer, où X (mot) et Y (nombre) sont des éléments qui peuvent changer dans la phrase alors que le reste non.

    J'ai essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ^il fait chaud à [\w].*, car il y a du soleil depuis [\d].*
    Mais ça ne passe pas, et je ne sais pas trop comment faire !

    Quelqu'un aurait une idée ?

  7. #7
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Bah il faut pas mettre de point devant l'astérisque.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Membre régulier
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2012
    Messages : 133
    Points : 109
    Points
    109
    Par défaut
    Ouais j'ai vu, faute bête car j'ai pas copié/collé mon code mais j'en est refait une.

    Maintenant j'ai ça,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ^il fait chaud [\w]*( )*,( )*car il y a du soleil depuis( )( )*[\d]{2}h(.*)
    Le problème est que j'ai l'impression qu'il ne reconnait pas les \w et \d en tant que raccourci de [a-zA-Z] c'est normal ?

    Surtout qu'ensuite j'aimerais récupérer le contenu du futur [\w]* dans un group(int)

    De plus j'aimerais limiter les deux chiffres entre 0 et 23 (car il n'y a que 24 heures dans la journées) or là je limite que sur le nombre d'entiers, mais il peut rentrer 29, 45 ...

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    281
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 281
    Points : 321
    Points
    321
    Par défaut
    Ce qui est bon a savoir avec les regex, c'est qu'il faut échapper le caractère d'échappement. un \n devient \\n en regex

Discussions similaires

  1. [VB.net][vs2005] Problème avec les expressions régulières
    Par zouhib dans le forum Windows Forms
    Réponses: 13
    Dernier message: 22/06/2006, 15h56
  2. Problème avec les expressions régulières
    Par Premium dans le forum Collection et Stream
    Réponses: 11
    Dernier message: 18/06/2006, 16h41
  3. Les Expressions Régulières
    Par zEndymion dans le forum Access
    Réponses: 4
    Dernier message: 12/06/2006, 13h36

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