VBA des correspondances multiples au sein d'une chaîne à l'aide des expressions régulières méthode execute
Je suis en train de faire correspondre les niveaux d'expérience pour différentes positions basé sur 1. Degré 2. Années d'Expérience. Le modèle est assez simple (exemple: "BS/5" serait un baccalauréat en sciences avec 5 ans d'expérience. J'ai aussi des entrées qui suivent ce régime, mais ont à plusieurs degrés et des niveaux d'expérience dans la même chaîne de caractères (exemple: "BS/5-MS/2") qui sont considérés comme équivalents. J'ai une fonction de base qui match et trouver la sous-chaîne, mais il ne revient jamais plus d'un match même si j'ai mis le .Mondiale de la propriété sur true pour l'objet regexp. Des idées? Le Code ci-dessous:
On Error Resume Next
ActiveWorkbook.VBProject.References.AddFromGuid "{3F4DACA7-160D-11D2-A8E9-00104B365C9F}", 5, 5
Dim theRegex As Object
Dim theString As String
Set theRegex = CreateObject("VBScript.RegExp")
With regex
.MultiLine = False
.Global = True
.IgnoreCase = False
End With
theRegex.Pattern = "([A-z][A-z][A-z]?/[0-9][0-9]?)"
theString = "MS/9-PhD/4"
Set MyMatches = theRegex.Execute(theString)
Debug.Print "SubMatches.Count: " & MyMatches.Item(0).SubMatches.Count
If MyMatches.Count <> 0 Then
With MyMatches
For myMatchCt = 0 To .Count - 1
Debug.Print "myMatchCt: " & myMatchCt
For subMtCt = 0 To .Item(subMtCt).SubMatches.Count - 1
Debug.Print "subMtCt: " & subMtCt
Debug.Print ("," & .Item(myMatchCt).SubMatches.Item(subMtCt))
Next
Next
End With
Else
Debug.Print "No Matches"
End If
- Fin du commentaire. Mais aussi, on dirait que vous faites allusion à la mauvaise variable dans la deuxième boucle.
For subMtCt = 0 To .Item(subMtCt).SubMatches.Count - 1
devrait probablement êtreFor subMtCt = 0 To .Item(myMatchCt).SubMatches.Count - 1
Vous devez vous connecter pour publier un commentaire.
Essayez de changer la ligne
With Regex
à
Votre
On Error resume next
déclaration est de déguiser l'erreur.