Bonjour,
[Pour info]
La chaine ci-dessous constitue un message dont chaque ligne est appelée segment identifié par les 3 premiers caractères.
Certains segments sont répétables,optionnels et peuvent aussi être regroupés.
Je souhaiterai vérifier qu'un message est bien constitué d'une suite définie de segments. J'ai donc crée une expression réguliere relative à mon message et j'ai testé une chaine constitée de la concaténation des 3 premiers caracteres de chaque ligne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 MSH|^~\&|SRLMED|BPTRU|CIT|PROFIL<CR> SFT|1|MP0245|PP2548||JEAN^JACQUES<CR> MSA|1|R2578|R264|ECO^ECOGRAPHIE|<CR>
Ce qui donne:
test1 vérifie bien mon expression réguliére mais pas test2 à cause du Z.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 string text1 = "MSHSFTMSA"; string text2 = "MSZSFTMSA"; string pat = @"(MSH)(SFT)(MSA)+(ERR)*"; Regex r = new Regex(pat); Match m = r.Match(text1); if (m.Success) Console.WriteLine("message ok"); else Console.WriteLine("message pas ok");
Comment faire pour récupérer la cause du non matching de la chaine et idéalement la position du bloc en erreur?
J'ai beau chercher via les différents tuto mais je vois pas comment faire...
Si vous avez des idées quitte à faire sans les expression régulières, je suis preneur mais vu la complexité de certains messages je préférerai utiliser les Regex...
Partager