VBA oferuje pozytywne i negatywne uprzedzenia, ale raczej niekonsekwentnie nie wygląda.
Najlepszym przykładem przy użyciu regex z VBA, które widziałem jest this article Patrick Matthews
[Aktualizacja przykład stosując Execute
zamiast Replace
]
Choć nie jestem całkowicie jasne od użytkowania ty może korzystać z funkcji takich jak ten z
- pomija żadnych słów od a
wszystkich słów nie wychodząc z zwraca wszystko z drugiego znaku na (za pomocą submatch - wzór wewnątrz (
i )
jest 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]([a-z]+)"
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
Zakładam, że używasz [RegExp ] (http://msdn.microsoft.com/en-us/library/ms974570.aspx) obiekt? –
@RobertHarvey Tak, jestem :) – rikAtee