VBA múltiples coincidencias dentro de una cadena usando el método de ejecución de expresiones regulares
Estoy tratando de igualar los niveles de experiencia para varias posiciones basadas en 1. Grado 2. Años de experiencia. El patrón es bastante simple (ejemplo: "BS / 5" sería una licenciatura en ciencias con 5 años de experiencia. También tengo entradas que siguen este esquema pero tienen múltiples grados y niveles de experiencia en la misma cadena (ejemplo: "BS / 5-MS / 2 ") que se consideran equivalentes. Tengo una función básica que coincidirá y encontrará el patrón de subcadena, pero nunca devuelve más de una coincidencia aunque haya establecido la propiedad .Global en verdadero para la expresión regular Objeto. ¿Alguna idea? Código abajo:
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