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 PHP Discussion :

Remplacement d'une partie de chaîne [RegEx]


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Août 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Finance

    Informations forums :
    Inscription : Août 2012
    Messages : 22
    Points : 33
    Points
    33
    Par défaut Remplacement d'une partie de chaîne
    Bonjour,

    En ANT, je pars de la chaîne :

    "nom_machine_logique":"quawas1f5","socle":"was_7","nom_serveur":"srvzentest","nom_application":"srvzentest_zentest.ear","nom_ear":"zentest.ear","action":"start","date_creation":"13/03/2014 11:11:11","date_debutjob":"","date_finjob":"","origine":"plugin","status":"waiting","etape":"startwas","date_etape":"01/04/2014 14:00:00","_id":"533966c2d89602e3b2536793"

    Et je veux obtenir :
    "nom_machine_logique":"quawas1f5","socle":"was_7","nom_serveur":"srvzentest","nom_application":"srvzentest_zentest.ear","nom_ear":"zentest.ear","action":"start","date_creation":"13/03/2014 11:11:11","date_debutjob":"","date_finjob":"","origine":"plugin","status":"inProgress","etape":"startwas","date_etape":"01/04/2014 14:00:00","_id":"533966c2d89602e3b2536793"

    Ceci est un exemple, le but est de généraliser le replace, mais je n'arrive pas à remplacer waiting par inProgress, je perd la fin de la chaîne :

    Ce que je veux remplacer :
    match="status"\:"(.*)"(.*)"

    Par :
    replace="status"\:"${statut}"\2"

    Je ne vois pas ou est l'erreur, mais je perd la fin de la chaîne, et cela ne vient pas de ANT, mais bien de mon incapacité à gérer cette regexp :

    AVANT
    [echo] "nom_machine_logique":"quawas1f5","socle":"was_7","nom_serveur":"srvzentest","nom_application":"srvzentest_zentest.ear","nom_ear":"zentest.ear","action":"start","date_creation":"13/03/2014 11:11:11","date_debutjob":"","date_finjob":"","origine":"plugin","status":"waiting","etape":"startwas","date_etape":"01/04/2014 14:00:00","_id":"533966c2d89602e3b2536793"

    APRES
    [echo] "nom_machine_logique":"quawas1f5","socle":"was_7","nom_serveur":"srvzentest","nom_application":"srvzentest_zentest.ear","nom_ear":"zentest.ear","action":"start","date_creation":"13/03/2014 11:11:11","date_debutjob":"","date_finjob":"","origine":"plugin","status":"inProgress"

    Je vous remercie par avance pour votre aide :-)

  2. #2
    Membre habitué Avatar de denissay
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 103
    Points : 125
    Points
    125
    Par défaut
    Ton pattern est TROP gourmand, le dernier " du pattern correspond bien au dernier " du string, ce qui fait que tu matches de "waiting ... jusqu'à ... 3b2536793"

    Tu as trois choix pour fixer ceci:

    • Activer la fonction non-groumande de regex, en php ça se fait en rajoutant le flag U (pour Ungreedy) => DEMO
    • Utiliser dans ton regex la forme non-gourmande (paresseuse) et ce en rajoutant ? après ton quatificateur => DEMO
    • Modifier "un peu" ton regex pour éviter ce problème => DEMO
    Une réponse utile vous a aidé ? N'oubliez pas le
    Votre problème est résolu ? N'oubliez pas le

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Août 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Finance

    Informations forums :
    Inscription : Août 2012
    Messages : 22
    Points : 33
    Points
    33
    Par défaut
    Euh comment dire, je suis confus ... de contentement :-).

    Je te remercie pour l'analyse (la raison du hic), pour les trois solutions fournies, et enfin pour le site sur les regexp.

    J'ai rarement eu une réponse aussi concise et efficace dans un forum, merci à toi. Cordialement.

    Et bien sûr : Sujet résolu

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

Discussions similaires

  1. Remplacer toute une partie d'un texte [match() ?]
    Par peephole83 dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 09/06/2011, 14h04
  2. Rechercher une partie de chaîne
    Par jonathanoudelet dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 12/09/2008, 16h04
  3. Réponses: 2
    Dernier message: 12/03/2008, 13h44
  4. Remplacement d'une partie de chaîne
    Par perdeak dans le forum Langage SQL
    Réponses: 2
    Dernier message: 13/02/2008, 11h39

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