Remplacement avec expressions régulières [Résolu]

Signaler
Messages postés
146
Date d'inscription
jeudi 22 novembre 2007
Statut
Membre
Dernière intervention
21 mars 2016
-
Messages postés
4719
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
1 février 2021
-
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;

8 réponses

Messages postés
4719
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
1 février 2021
14
Pourquoi ne pas utiliser un outil qui fait tout ?
indentation, traitement des blancs etc etc

un clic et hop tout ton code nickel chrome et très beau

cantador
Messages postés
702
Date d'inscription
vendredi 21 mars 2003
Statut
Membre
Dernière intervention
1 octobre 2009
3
Delforexp
bien sur !




Ken@vo




<hr size="2" width="100%" />



Code, Code, Codec !
Messages postés
4719
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
1 février 2021
14
Mais oui [mailto:ken@vo ken@vo] et qui va jusqu'à D 2007 !

cantador
Messages postés
169
Date d'inscription
dimanche 16 février 2003
Statut
Membre
Dernière intervention
15 avril 2008

Ctrl+j
Messages postés
146
Date d'inscription
jeudi 22 novembre 2007
Statut
Membre
Dernière intervention
21 mars 2016

Merci pour vos réponses.

J'essayerai Delforexp dès lundi.

Quant-à Ctrl+J, j'essayerai aussi lundi, parce que je n'ai pas Delphi6 chez moi, mais seulement au boulot.

Mais merci à tous.
Messages postés
146
Date d'inscription
jeudi 22 novembre 2007
Statut
Membre
Dernière intervention
21 mars 2016

Effectivement,

Que demander de plus que ce que fait DelForExp, "a freeware Pascal source code formatter for Delphi". Merci de m'avoir fait découvrir cet outil.

Si quelqu'un sait comment faire avec les expressions régulères, je serais curieux de connaître la solution, même si mon problème est résolu.

Bonne semaine à tous.
Messages postés
146
Date d'inscription
jeudi 22 novembre 2007
Statut
Membre
Dernière intervention
21 mars 2016

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 !
Messages postés
4719
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
1 février 2021
14
Tu as le source de DelForExp...

cantador