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 :

[expression reguliere]Récupéré une ip


Sujet :

Langage Java

  1. #1
    Membre éclairé
    Avatar de Blo0d4x3
    Inscrit en
    Octobre 2003
    Messages
    593
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 593
    Par défaut [expression reguliere]Récupéré une ip
    Bonjour, je veux récupéré mon ip depuis le site checkip de dyndns.

    J'ai donc fait une expression réguliére que j'ai récupéré d'un de mes code dotnet
    checkip.dyndns.org

    qui marchait très bien:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    private static String _regex = "\\D*(?<ipaddr>(\\d){1,3}\\.(\\d){1,3}\\.(\\d){1,3}\\.(\\d){1,3}).*";
    Mais la c'est le drame:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Exception in thread "main" java.util.regex.PatternSyntaxException: Unknown look-behind group near index 54
    \D*(?<ipaddr>(\d){1,3}\.(\d){1,3}\.(\d){1,3}\.(\d){1,3}
    Pourquoi en java ca foire? les expressions ne sont pas les mêmes suivant les langages?

    merci.

  2. #2
    Membre confirmé Avatar de Emplyst
    Inscrit en
    Mars 2006
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 152
    Par défaut
    ahh un autre fan des regex, pkoi pas un substring(20) ?

  3. #3
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "\\D*(?<ipaddr>(\\d){1,3}\\.(\\d){1,3}\\.(\\d){1,3}\\.(\\d){1,3}).*"
    Il est censé faire quoi le "?" ?

  4. #4
    Membre éclairé
    Avatar de Blo0d4x3
    Inscrit en
    Octobre 2003
    Messages
    593
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 593
    Par défaut
    a remplacer le: devant l'adresse ip

  5. #5
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Sous quelle forme est l'adresse IP?
    Que représente le "<ipaddr>"?

  6. #6
    Membre éclairé
    Avatar de Blo0d4x3
    Inscrit en
    Octobre 2003
    Messages
    593
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 593
    Par défaut
    sinon le substring(20) peut pas marcher, car tu ne sait pas a l'avance combien de chiffre aura ton ip. entre 4 et 12 chiifres.

  7. #7
    Membre confirmé Avatar de Emplyst
    Inscrit en
    Mars 2006
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 152
    Par défaut
    Citation Envoyé par Blo0d4x3
    sinon le substring(20) peut pas marcher, car tu ne sait pas a l'avance combien de chiffre aura ton ip. entre 4 et 12 chiifres.
    Heuu bien String.substring(20) vas prendre toute ta chaine a partir de la position 20 qui sera ton adresse ip

  8. #8
    Membre éclairé
    Avatar de Blo0d4x3
    Inscrit en
    Octobre 2003
    Messages
    593
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 593
    Par défaut
    ben une ip c'est une ip quoi.

    Je recois ca du site checkip:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <html><head><title>Current IP Check</title></head><body>Current IP Address: 81.51.14.170</body></html>
    C'est mon ip me hacker pas lool .
    Faux donc virrer le code html et le texte Current IP ...

    Sinon dans le code dotnet je recuperai l'ip dans la "variable" <ipaddr>.

  9. #9
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    a remplacer le: devant l'adresse ip
    Ca n'a pas l'air nécessaire.
    ben une ip c'est une ip quoi.
    Oui mais son contexte.
    (\\d){1,3}\\.(\\d){1,3}\\.(\\d){1,3}\\.(\\d){1,3})
    Une IP est composé de nombres inférieurs ou égaux à 255.
    Donc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "(([0-1]?\\d?\\d{1}|2?[0-4]?\\d{1}|25[0-5]{1})\\.){3}([0-1]?\\d?\\d{1}|2?[0-4]?\\d{1}|25[0-5]{1})"
    A vérifier.

  10. #10
    Membre confirmé Avatar de Emplyst
    Inscrit en
    Mars 2006
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 152
    Par défaut
    Normalement je crois que tu devvrais utiliser une classe parser XML mais puisque je suis debutant je connais pas et je n'ai que ma logique :
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    public class DummyClass
    {
        public static void main(String[] args)
        {
            String httpBuffer = "<html><head><title>Current IP Check</title>" +
                                "</head><body>Current IP Address: 81.51.14.170" + 
                                "</body></html>";
            String prefixe = "Current IP Address: ";
            String suffixe = "</body></html>";
     
            System.out.println(xTract(httpBuffer, prefixe, suffixe));
        }
     
        public static String xTract(String string, String prefixe, String suffixe)
        {
            int start;
            int end;
            String xTracted;
     
            if (!string.contains(prefixe) || !string.contains(suffixe))
            {
                xTracted = "";
            }
            else
            {
                start = string.indexOf(prefixe) + prefixe.length();
                end = string.indexOf(suffixe);
     
                xTracted = string.substring(start, end);
            }
     
            return xTracted;
        }
    }

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 46
    Par défaut
    Ouép ça devrait marcher ça, mais plus simplement, puisque c'est toujours le même cas de figure, tu pourrais faire un truc comme ça non ? :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    String httpBuffer = "<html><head><title>Current IP Check</title>" +
                        "</head><body>Current IP Address: 81.51.14.170" + 
                        "</body></html>";
    String ip = httpBuffer.substring(httpBuffer.indexOf("Address: ")+9,
                                     httpBuffer.indexOf("</body>"));

  12. #12
    Membre confirmé Avatar de Emplyst
    Inscrit en
    Mars 2006
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 152
    Par défaut
    Pas faux, mais c'est toujours utile de faire qqch de reutilisable

  13. #13
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Pourquoi ne pas faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    String regex = "(([0-1]?\\d?\\d{1}|2?[0-4]?\\d{1}|25[0-5]{1})\\.){3}([0-1]?\\d?\\d{1}|2?[0-4]?\\d{1}|25[0-5]{1})";
    Pattern p=Pattern.compile(regex);
    Matcher m=p.matcher(texte);
    String ipaddr=null;
    if(m.matches()){
    	ipaddr=m.group();
    }
    ?

  14. #14
    Membre confirmé Avatar de tnodev
    Profil pro
    SSSSS
    Inscrit en
    Mai 2005
    Messages
    182
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : SSSSS

    Informations forums :
    Inscription : Mai 2005
    Messages : 182
    Par défaut
    bonjour

    sur eclipse, un plugin gratuit pour tester les expressions réguliéres QuickRex
    http://www.bastian-bergerhoff.com/ec...ckREx/toc.html


  15. #15
    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
    Citation Envoyé par seriousme
    Pourquoi ne pas faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    String regex = "(([0-1]?\\d?\\d{1}|2?[0-4]?\\d{1}|25[0-5]{1})\\.){3}([0-1]?\\d?\\d{1}|2?[0-4]?\\d{1}|25[0-5]{1})";
    Pattern p=Pattern.compile(regex);
    Matcher m=p.matcher(texte);
    String ipaddr=null;
    if(m.matches()){
        ipaddr=m.group();
    }
    ?
    c'est presque ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    String regex = "(([0-1]?\\d?\\d{1}|2?[0-4]?\\d{1}|25[0-5]{1})\\.){3}([0-1]?\\d?\\d{1}|2?[0-4]?\\d{1}|25[0-5]{1})";
    Pattern p=Pattern.compile(regex);
    Matcher m=p.matcher(texte);
    String ipaddr=null;
    if(m.find()){
        ipaddr=m.group();
    }
    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

Discussions similaires

  1. expressions regulieres - interdire une chaine
    Par Pallando dans le forum Langage
    Réponses: 7
    Dernier message: 22/11/2009, 22h28
  2. Stocker une expression reguliere dans une base MySQL
    Par devroot dans le forum Général Java
    Réponses: 4
    Dernier message: 07/08/2009, 19h03
  3. Réponses: 2
    Dernier message: 31/07/2007, 15h23
  4. Réponses: 4
    Dernier message: 29/05/2006, 16h27
  5. Réponses: 6
    Dernier message: 08/06/2004, 15h22

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