ANT - ReplaceRegExp Task : Pb syntaxe sur expressions régulières

romegonic Messages postés 28 Date d'inscription   Statut Membre Dernière intervention   -  
romegonic Messages postés 28 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je n'arrive pas à remplacer une expression par une autre (en utilisant les expressions régulières), dans un fichier xml, en ANT :

objet original :

"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"

objet cible :

"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"

But : remplacer "status":"waiting" par "status":"inProgress"
Ceci est bien sûr un exemple, ces valeurs seront variabilisées (via une property ou une var).

La commande que j'utilise :
<replaceregexp file="${json}"
match=""status":"(.*)",([^\.]*)"
replace=""status":"success",\2"
byline="true"
/>

Précision : Le forum affiche bien des ", mais dans mon match et mon replace j'ai bien mis des Etcommerciel#34 suivis d'un pointvirgule , c'est-à-dire le code ascii d'une "

Le problème est que j'obtiens le bon début de chaîne, mais je ne garde pas bien la fin (\2) :
"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","_id":"533966c2d89602e3b2536793"

Il manque :
,"etape":"startwas","date_etape":"01/04/2014 14:00:00"

J'ai donc besoin d'aide pour la syntaxe, merci par avance :-)

reference : https://ant.apache.org/manual/Tasks/replaceregexp.html
A voir également:

1 réponse

romegonic Messages postés 28 Date d'inscription   Statut Membre Dernière intervention  
 
solution trouvée :

remplacer, dans le match :
match=""status":"(.*)",([^\.]*)"

par :
match=""status":"(.*?)",([^\.]*)"

Le ? permet de dire qu'on ne veut que la première occurence du pattern "(.*)", car sinon il prend tout, jusqu'au dernier "

sujet résolu
0