fin alternative pour la matrice du pattern( expression rationnelle)
bonjour a tous
j'ai cherché partout cru souvent trouvé mais non alors une fois n'est pas coutume je pose la question
comment coder la matrice du pattern a fin de récupérer la chaine souhaitée en fonction de deux texte quasi identique a une nuance pret
l'un avec "train" l'autre avec "car"
la matrice est celle ci: "toto +(\D*)train" ou "car" pour l'autre
je voudrais pouvoir coder "train" ou "car" par un crochet ou parentheze alternative qui fonctionnerait pour les 2
est ce possible ce que je veux récupérer ce qui est est en rouge dans les deux phrases
je précise que je ne peut pas utiliser les operateur \D* [a-z] car dans les vrai exemples de phrase(confidentielles)se sont la lettre "à" et le symbole"-"
alors je sais c'est tordu mais c'est moi :D
voila mes deux textes
texte = "la semaine prochaine toto part en colonie avec son ecole en car de nuit "
texte = "demain toto part au sport avec son ecole par le train de nuit "
voila les 2 subs
Code:
1 2 3 4 5 6
| Sub test1()
Dim texte As String
texte = "toto part en colonie avec son ecole en car "
ou = chainevalide(texte, "toto +(\D*)car")(0)
MsgBox ou
End Sub |
Code:
1 2 3 4 5
| sub test2()
texte = "toto part au sport avec son ecole par le train"
ou = chainevalide(texte, "toto +(\D*)train")(0)
msgbox ou
End Sub |
voila la fonction qui fonctionne tres bien utilisant l'object VBScript.RegExp
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| Function chainevalide(txt As String, matrice) As Variant
Dim Matches
With CreateObject("VBScript.RegExp")
.Global = True
.Pattern = matrice
.IgnoreCase = True
Set Matches = .Execute(txt)
ReDim tablo(Matches.Count): i = 0
For Each Match In Matches
tablo(i) = Match.Value
i = i + 1
Next
End With
chainevalide = tablo
End Function |
allez ca fait une heure que je plombe dessus j'ai mal au crane ayez pitié :calim2: