zwyx
Messages postés146Date d'inscriptionjeudi 22 novembre 2007StatutMembreDernière intervention21 mars 2016
-
4 avril 2008 à 16:40
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 2021
-
7 avril 2008 à 14:10
Bonjour à tous,
Je travaille sous Delphi6 et je souhaite effectuer des remplacements, de manière automatique, en utilisant les expressions régulières. J'ai déjà étudier pleins de tutoriaux concernant les expressions régulières, mais je n'arrive toujours pas à obtenir ce que je cherche, c'est pourquoi je sollicite votre aide.
Dans presque tout mon code (~3000 lignes), je n'ai mis d'espace ni avant, ni après, les opérateurs de test =, <, >, <=, >= et <>. J'ai remarqué tardivement que cela n'est pas correct d'après les normes standards de codage utilisées. Par contre, j'ai bien mis un espace avant et après le signe d'affectation :=.
Je cherche donc, pour ne pas le faire manuellement, l'expression régulière de remplacement, qui corrigerait mes espacements. De façon à transformer l'exemple suivant,
if i=0then
i := 2
else if i<=2then
if i<>84then
i := 0;
en ce qui suit.
if i = 0then
i := 2
else if i <= 2then
if i <> 84then
i := 0;
Je précise bien que ce n'est qu'un exemple bidon pour illustrer mon problème. Je n'ai bien évidemment pas écrit cet extrait de code.
Je vous remercie pour votre aide, et vous souhaite un bon week-end;
zwyx
Messages postés146Date d'inscriptionjeudi 22 novembre 2007StatutMembreDernière intervention21 mars 2016 7 avril 2008 à 13:37
Pour les curieux comme moi qui seraient intéressés, j'ai trouvé comment rechercher avec les expressions régulières, toutes les occurences de comparaison, pour lesquelles je n'ai pas mis un espace avant et après l'opérateur.
La formule est la suivante (ce n'est sûrement pas la seule valable, ni la meilleure d'ailleurs):
[^ ](=|<>|<=?|>=?)[^ ]
Voici quelques explications:
la classe entre crochets, [^ ]:
tout caractère sauf un espace
le motif entre parenthèses, (=|<>|<=?|>=?):
le signe = , ou
le symbole différent <>, ou
le signe <, suivi de 0 ou 1 fois le signe =, ou
le signe >, suivi de 0 ou 1 fois le signe =
Bon maintenant, je ne sais pas s'il est possible de les mettre en forme automatiquement. Mais pour ça, il y a DelForExp !