Bonjour,
Je cherche à comparer des champs répondant à plusieurs structurations possibles mais dont les balises de séparation sont plutôt aléatoires>>> ça c'est une phrase incompréhensible.
Donc ex:
J'aimerais pouvoir identifier et comparer ces 2 champs et les identifier comme identiques:
"BlaBlaBlaBla_F4E_21_PRC_QA010_BlaBlaBlaBla" = "BliBloBLU-F4E-21 PRC_QA-010.BliBloBLU"
et ceci pour plusieurs "modèles" de structuration; ex:
"F4E_21_PRC_QA010" ; "ENG-72-MF-5P 0074-AL" ; "_DF6DS4D_"
J'ai essayé d'écrire plein de trucs.... mais bof... ce bout de code est juste là pour voir ce que j'ai déjà fait mais il est surement "très mauvais" (c'est mon 3eme jour avec regex)
En fait je voudrais que le résultat du regex enlève par la suite les balises qui ont servies à extraire mon/mes "modèles" d'une chaîne de caractères afin de pouvoir les comparer !!
Ensuite j'appel ma fonction:
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
20
21
22
23
24
25
26
27
28
29 Function RegexRecherche(Texte As String) Dim RegEx As RegExp Set RegEx = New RegExp Dim matches As IMatchCollection2 Dim match As Variant With RegEx .IgnoreCase = False .Global = True .Pattern = "(([A-Z]|[0-9]){3}[- _]([A-Z]|[0-9]){2,4}[- _]([A-Z]|[0-9]){2,3}[- _]([A-Z]|[0-9]){4,6}[- _]([A-Z]|[0-9]){2,4})" .Pattern = .Pattern & "|(([A-Z]|[0-9]){3}(?<=[- _])([A-Z]|[0-9]){2}[- _]([A-Z]|[0-9]){3}[- _]([A-Z]|[0-9]){2}[- _]?([A-Z]|[0-9]){3})" 'F4E_21_PRC_QA010 ou F4E_21_PRC_QA-010 .Pattern = .Pattern & "|(([A-Z]|[0-9]){3}[- _]([A-Z]|[0-9]){1}[- _]([A-Z]|[0-9]){6})" .Pattern = .Pattern & "|(ITER)([-_ ])([A-Z]|[0-9]){1,3}([-_ ])([A-Z]|[0-9]){3,6}" .Pattern = .Pattern & "|(?![-_ ])([A-Z]|[0-9]){6,7}(?=[-_ .])" ' >>>>> PROBLEME .Pattern = .Pattern & "|(PCR[- _]?[0-9]{1,4}(?=[-_ ]))" .Pattern = .Pattern & "|(ENG[- _]?[0-9]{1,2}[- _]?[A-Z]{2}[- _]?([A-Z]|[0-9]){2}[ \S][0-9]{4}[- _]?[A-Z]{2}(?=[-_ .]))" '"ENG-72-MF-5P 0074-AL.xlsx" .Pattern = .Pattern & "|(IO-_[0-9]{2}_[A-Z]{2}-_([A-Z]|[0-9]){6})" ' IO-_21_CS-_3YJNQJ Set matches = .Execute(Texte) End With For Each match In matches RegexRecherche = matches.Item(matches.Count - 1).Value Next End Function
"F4E-21 PRC_QA-010" >>> oui cela rentre dans le modele "F4E[truc de séparation: -_ . etc]21[truc de séparation: -_ . etc]PRC[truc de séparation: -_ . etc]QA[truc de séparation: -_ . etc]010"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 if RegexRecherche(Texte1) = RegexRecherche(Texte2) then blablabla...
Voilà.. j'espère que c'est clair !
Merci bcp
Partager