Aide pour une Regex - Divers - Programmation
Marsh Posté le 01-08-2022 à 10:31:12
Perso, je ferais plutôt un petit script en PHP (ou Perl, Python, bash, Powershell...) suivant ton langage préféré et ton OS.
Marsh Posté le 03-08-2022 à 09:00:34
Sinon ça doit être un truc du genre :
Code :
|
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)
Marsh Posté le 03-08-2022 à 12:03:40
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.
Marsh Posté le 03-08-2022 à 15:55:08
quand .+ n'est pas suffisant et que tu veux matcher des lignes entières, tu peux utiliser [\s\S]+
Marsh Posté le 06-08-2022 à 10:29:17
Comme c'est du remplacement de ligne, c'est simple :
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+,
Marsh Posté le 31-07-2022 à 21:48:19
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 :
blablabla
%endTestcase(i_assertLog=1,i_nbasser=2,l_errors=1,l_warnings=0);
blablabla
blablablablablabla
Apres :
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 :
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