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

Messages postés
152
Date d'inscription
jeudi 22 novembre 2007
Dernière intervention
21 mars 2016
- 4 avril 2008 à 16:40 - Dernière réponse :
Messages postés
4996
Date d'inscription
dimanche 26 février 2006
Dernière intervention
27 mars 2018
- 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;
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
Messages postés
4996
Date d'inscription
dimanche 26 février 2006
Dernière intervention
27 mars 2018
- 4 avril 2008 à 20:57
3
Merci
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

Merci cs_cantador 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de cs_cantador
Meilleure réponse
Messages postés
759
Date d'inscription
vendredi 21 mars 2003
Dernière intervention
1 octobre 2009
- 4 avril 2008 à 23:20
3
Merci
Delforexp
bien sur !




Ken@vo




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



Code, Code, Codec !

Merci cs_Kenavo 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de cs_Kenavo
Messages postés
4996
Date d'inscription
dimanche 26 février 2006
Dernière intervention
27 mars 2018
- 5 avril 2008 à 12:37
0
Merci
Mais oui [mailto:ken@vo ken@vo] et qui va jusqu'à D 2007 !

cantador
Commenter la réponse de cs_cantador
Messages postés
175
Date d'inscription
dimanche 16 février 2003
Dernière intervention
15 avril 2008
- 5 avril 2008 à 13:31
0
Merci
Ctrl+j
Commenter la réponse de cs_matrix1
Messages postés
152
Date d'inscription
jeudi 22 novembre 2007
Dernière intervention
21 mars 2016
- 5 avril 2008 à 16:49
0
Merci
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.
Commenter la réponse de zwyx
Messages postés
152
Date d'inscription
jeudi 22 novembre 2007
Dernière intervention
21 mars 2016
- 7 avril 2008 à 10:56
0
Merci
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.
Commenter la réponse de zwyx
Messages postés
152
Date d'inscription
jeudi 22 novembre 2007
Dernière intervention
21 mars 2016
- 7 avril 2008 à 13:37
0
Merci
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 !
Commenter la réponse de zwyx
Messages postés
4996
Date d'inscription
dimanche 26 février 2006
Dernière intervention
27 mars 2018
- 7 avril 2008 à 14:10
0
Merci
Tu as le source de DelForExp...

cantador
Commenter la réponse de cs_cantador

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.