Bonjour,
J'ai un problème avec une regex, dans une appli que j'ai en Delphi 7. J'utilise la librairie TPerlRegEx.
Ce n'est pas vraiment un problème lié à delphi, mais plus à l'utilisation d'expression régulière.
Je ne sais pas si je poste au bon endroit.
Voici mon problème.
j'ai des chaines de caractère du style : ADFBH:CF+KLJHD34-kjh\+ASGFD\+DFGD:SDFSDF-ZER.
Je souhaiterais découper ces chaines sur la combinaison \+. Je dois donc récupérer les chaines suivantes :
- ADFBH:CF+KLJHD34-kjh
- ASGFD
- DFGD:SDFSDF-ZER
J'utilise la fonction suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 procedure TForm1.btn5Click(Sender: TObject); var regx: TPerlRegEx; begin lst1.Clear; regx := TPerlRegEx.Create; regx.Subject := edt2.Text; // regx.RegEx := '([^\?]+[^\+])([\?][\+])?'; // regx.RegEx := '([^\+]*)(?:[\+])?'; regx.RegEx := '([^\+]*)(?:[\+]?)'; // regx.RegEx := '([^\?][^\+])(?:\\\+)?'; if (regx.Match) then repeat lst1.Items.Add(regx.MatchedText); until not regx.MatchAgain; FreeAndNil(regx); end;
Je pensais utiliser la regex suivante ([^\+]*)(?:[\+]?).
Mais, cela ne fonctionne pas correctement, j'obtiens:
- ADFBH:CF+
- KLJHD34-kjh\+
- ASGFD\+
- DFGD:SDFSDF-ZER
Savez-vous comment corriger mon traitement ?
Partager