Używam Access VBA do parsowania ciągu znaków z wyrażeniem regularnym. Oto moja funkcja regex:vba pozytywna antycypacja jest zbyt chciwa
Function regexSearch(pattern As String, source As String) As String
Dim re As RegExp
Dim matches As MatchCollection
Dim match As match
Set re = New RegExp
re.IgnoreCase = True
re.pattern = pattern
Set matches = re.Execute(source)
If matches.Count > 0 Then
regexSearch = matches(0).Value
Else
regexSearch = ""
End If
End Function
Kiedy przetestować go z:
regexSearch("^.+(?=[ _-]+mp)", "153 - MP 13.61 to MP 17.65")
ja spodziewałem się dostać:
153
ponieważ niewielu znaków między tym i pierwszej instancji "MP" to te w klasie określonej w poprzedniej stronie.
ale mój powrót jest rzeczywista wartość:
153 - MP 13.61 to
Dlaczego jest przechwytywanie do drugiego „MP”?
Że go rozwiązać. – sigil
Dobrze słyszeć ten sigil. –
+1 ładnie wykonane. – brettdj