VBA множественные совпадения в одной строке с использованием метода execute регулярных выражений
Я пытаюсь сопоставить уровни опыта для различных позиций на основе 1. Степень 2. Годы опыта. Шаблон довольно прост (пример: "BS/5" будет бакалавром наук с 5-летним опытом. У меня также есть записи, которые следуют этой схеме, но имеют несколько степеней и уровней опыта в одной строке (пример: "BS/5-MS/2"), которые считаются эквивалентными. У меня есть базовая функция, которая будет сопоставлять и находить шаблон подстроки, но она никогда не возвращает более одного совпадения, даже если для свойства регулярного выражения установлено свойство true .Global. Объект. Есть идеи? Код ниже:
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
1 ответ
Решение
Попробуйте изменить строку With Regex
в
With theRegex
.MultiLine = False
.Global = True
.IgnoreCase = False
End With
Ваш On Error resume next
Заявление маскирует ошибку.