Estoy usando Access VBA para analizar una cadena con expresiones regulares. Aquí está mi función de expresiones regulares:vba lookahead positivo es demasiado codicioso
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
Cuando la prueba con:
regexSearch("^.+(?=[ _-]+mp)", "153 - MP 13.61 to MP 17.65")
Estoy esperando para obtener:
153
porque los únicos caracteres entre esto y la primera instancia de 'MP' son los de la clase especificada en la búsqueda anticipada.
pero mi valor de retorno real es:
153 - MP 13.61 to
¿Por qué es capturar hasta el segundo 'MP'?
Eso lo resolvió. – sigil
Es bueno escuchar ese sigilo. –
+1 muy bien hecho. – brettdj