Lookbehind en regex para VBA?

¿Hay alguna manera de hacer un look negativo y positivo en VEX regex?

Quiero no coincidir si la cadena comienza con “A”, así que actualmente estoy haciendo ^ A al comienzo del patrón, y luego eliminé el primer carácter de la coincidencia (0). Obviamente no es el mejor método!

Estoy usando el objeto regExp.

VBA ofrece aspectos positivos y negativos, pero no de forma inconsistente, no mira hacia atrás.

El mejor ejemplo del uso de Regex con VBA que he visto es este artículo de Patrick Matthews

[Ejemplo actualizado utilizando Execute lugar de Replace ]

Si bien no estoy completamente seguro de su uso, podría usar una función como esta con

  • salta cualquier palabra que comience con A
  • para todas las palabras que no comiencen con a, devuelve todo desde el segundo carácter activado (utilizando un subpaso – el patrón dentro ( y ) es submatch 1 –

     Sub TestString() MsgBox ReducedText("cfat dcat") MsgBox ReducedText("Sat all over the hat again") End Sub Function ReducedText(strIn As String) As String Dim objRegex As Object Dim objRegMC As Object Dim objRegM As Object Dim strOut As String Set objRegex = CreateObject("vbscript.regexp") With objRegex .IgnoreCase = True 'not needed if matching the whole string .Global = True .Pattern = "\b[^a\s]([az]+)" If .test(strIn) Then Set objRegMC = .Execute(strIn) For Each objRegM In objRegMC strOut = strOut & objRegM.submatches(0) & vbNewLine Next ReducedText = strOut Else ReducedText = "Starts with A" End If End With End Function 

¿Qué le parece poner el ^ A en un grupo no capturado y usar la propiedad SubMatches del objeto Match para obtener su valor coincidente?