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 :

Regex pour extraire une chaîne de caractères qui contient la même chaîne


Sujet :

Langage Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 69
    Points : 71
    Points
    71
    Par défaut Regex pour extraire une chaîne de caractères qui contient la même chaîne
    Bonjour,

    je travaille sur de la réécriture d'URLs.

    Je pars d'une URL de ce type:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://unPrefix?id=monId&url=http://www.developpez.com
    De cette url, je veux récupérer les paramètres id et url.
    Cela est facile avec le split java et l'expression régulière suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String s[] = feedUrl.replace(getPrefix(), "").split("^\\?id=|(&url=)");
    Là où j'ai un problème, c'est si le paramètre url référence une url qui elle-même contient le paramètre url!

    Par exemple si j'ai:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://unPrefix?id=test3&url=my_url&param1=value1&url=url2
    Alors le split me retourne bien l'id, mais seulement la partie de l'url jusqu'au prochain paramètre url. J'obtiens donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    id: test3
    url: my_url&param1=value1
    Comment puis-je modifier l'expression régulière afin d'obtenir:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    id: test3
    url: my_url&param1=value1&url=url2
    ?

    Merci pour vos idées!

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 69
    Points : 71
    Points
    71
    Par défaut et l'url pourrait aussi contenir le paramètre id
    Je viens de penser que l'url pourrait non seulement contenir elle-même le paramètre url, mais également le paramètre id.
    Je ne suis pas sûr de réussir à prendre cela en compte avec les expressions régulières...

  3. #3
    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
    Si tes expressions régulières ne fonctionnent pas, essaie de jouer avec les méthodes substring() et indexOf() de la classe String. C'est un peu plus lourd, mais tu auras ce que tu veux.

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Sauf que si tu regarde la spec pour les url et leur paramètres, quand tu as ceci


    http://unPrefix?id=test3&url=my_url&...alue1&url=url2

    le paramètre url vaut my_url et rien d'autre.

    Si tu veux passer dans le paramètre url http://www.machin.com?id=a&url=b

    tu devrais alors écrire

    http://unPrefix?id=test3&url=http%3A...%3Da%26url%3Db

    et tu obtiendrais comme réponse à ton code
    url=http%3A%2F%2Fwww.machin.com%3Fid%3Da%26url%3Db
    que tu devrais ensuite décoder bien sur, comme toujours avec les parametres d'url, en utilisant la classe urldecoder.

Discussions similaires

  1. [11gR1] Une regex pour formater une chaine de caractères
    Par akkyshan dans le forum PL/SQL
    Réponses: 6
    Dernier message: 11/02/2014, 17h27
  2. [XL-2010] Code vba pour extraire une chaîne spécifique de caractéres
    Par samy35 dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 25/09/2013, 18h34
  3. Réponses: 4
    Dernier message: 26/03/2010, 00h02
  4. traiter une chaine de caractères qui contient '/'
    Par haithem20080 dans le forum Applications et environnements graphiques
    Réponses: 3
    Dernier message: 16/03/2010, 11h01
  5. Réponses: 5
    Dernier message: 04/07/2007, 18h31

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