Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1814 connectés 

  FORUM HardWare.fr
  Programmation
  Divers

  Aide pour une Regex

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Aide pour une Regex

n°2423232
nicof86
Posté le 31-07-2022 à 21:48:19  profilanswer
 

Bonjour
 
j'ai plusieurs fichiers dont il faudrait changé le contenu, j'envisage d'utiliser Notepadd++ pour cela mais je ne maitrise pas les expressions réguliere...j'aurais besoin de votre aide
toutes mes lignes contenant %endtestcase doivent etre entourer par /* */  (delimiteur de debut %endtestcase   delimiteur de fin : ; ).............et bien évidemment les paramètres situé entre les parenthèses ne sont pas fixe ;-)
Exemple :
avant :

Citation :


blablabla
%endTestcase(i_assertLog=1,i_nbasser=2,l_errors=1,l_warnings=0);
blablabla
blablablablablabla


Apres :

Citation :


blablabla
/*%endTestcase(i_assertLog=1,i_nbasser=2,l_errors=1,l_warnings=0);*/
blablabla
blablablablablabla


Et encore mieux et si possible avec ces deux lignes en plus :

Citation :


blablabla
/*%endTestcase(i_assertLog=1,i_nbasser=2,l_errors=1,l_warnings=0);*/
%assertLog(i_errors=,i_warnings=);
%endTestcase(i_assertLog=1);
blablabla
blablablablablabla


 
Merci
Nicolas.


Message édité par nicof86 le 31-07-2022 à 21:49:57
mood
Publicité
Posté le 31-07-2022 à 21:48:19  profilanswer
 

n°2423249
rufo
Pas me confondre avec Lycos!
Posté le 01-08-2022 à 10:31:12  profilanswer
 

Perso, je ferais plutôt un petit script en PHP (ou Perl, Python, bash, Powershell...) suivant ton langage préféré et ton OS. ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2423398
gzii
court-circuit
Posté le 03-08-2022 à 09:00:34  profilanswer
 

Sinon ça doit être un truc du genre :

Code :
  1. ^(%endTestcase.*;)$


et avec le groupe tu récupères la ligne pour en faire ce que tu veux.
(même pas sûr que ça soit nécessaire de faire un groupe pour ça, je ne me rappelle plus)


Message édité par gzii le 03-08-2022 à 09:01:42
n°2423410
rufo
Pas me confondre avec Lycos!
Posté le 03-08-2022 à 12:03:40  profilanswer
 

Le problème, c'est que .* ne remplace tout type de caractère :/ Certains ne sont pas pris en compte (du genre, saut de ligne, tabulation...) et du coup, en fonction de ce que qui se trouve après "endTestcase", la regexp va plus ou moins laisser des lignes de côté.
 
Moi, je l'aurais fait en PHP en recherchant la position de la chaîne "endTestcase" puis en recherchant la position de la chaîne de fin et je prendrais tout ce qui se trouve entre les 2 positions, le tout dans une boucle.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2423412
gzii
court-circuit
Posté le 03-08-2022 à 12:08:28  profilanswer
 

Ah tu disais toutes les lignes.

n°2423437
gatsu35
Blablaté par Harko
Posté le 03-08-2022 à 15:55:08  profilanswer
 

quand .+ n'est pas suffisant et que tu veux matcher des lignes entières, tu peux utiliser [\s\S]+


---------------
Blablaté par Harko
n°2423695
gilou
Modérateur
Modzilla
Posté le 06-08-2022 à 10:29:17  profilanswer
 

Comme c'est du remplacement de ligne, c'est simple :  
https://rehost.diberie.com/Picture/Get/f/82439
 
Rechercher : ^(%endTestcase.*)$
Remplacer : /*$1*/\n%assertLog\(i_errors=,i_warnings=\);\n%endTestcase\(i_assertLog=1\);
 
Bon, s'il voulait en 2e ligne de remplacement
%assertLog(i_errors=1,i_warnings=0);
avec les valeurs des paramètres comme dans la ligne initiale, alors la ça serait complexe a faire dans notepad++, mais trivial en perl, ou python aussi, je suppose.
 

rufo a écrit :

Le problème, c'est que .* ne remplace tout type de caractère :/ Certains ne sont pas pris en compte (du genre, saut de ligne, tabulation...) et du coup, en fonction de ce que qui se trouve après "endTestcase", la regexp va plus ou moins laisser des lignes de côté.


Non. Un . matche tout, sauf \n,  en tout cas dans la syntaxe pcre, qui est le standard, et ce qu'utilise Notepad++
En particulier, .* matche donc les tabulations.
J'ai l'impression que tu mélanges avec \s qui lui correspond  (en locale standard, ie ascii) à \t, \f, VT (\xB), \n, \r, et l'espace standard lui même, soit [\x9-\xD\x20].
A+,


Message édité par gilou le 06-08-2022 à 10:58:41

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Divers

  Aide pour une Regex

 

Sujets relatifs
Aide RegEx pour extraire une sous chaine entre crochetREGEX besoin d'aide
Aide pour regexAide sur une regex
Aide sur une REGEX C# svpaide regex svp
Aide pour une Regex[C#] aide sur un regex.
Bash/Shellscript, aide regex/sed/trRecuperer l'id de session php a l'aide d'un regex
Plus de sujets relatifs à : Aide pour une Regex


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR