Reguläre Ausdrücke in VBA

Trash

Erfahrenes Mitglied
Hallo,
ich bins mal wieder. Ich kämpfe derzeit mit regulären Ausdrücken in VBA und komme damit nicht ganz klar.

Folgendes habe ich zum Test entworfen:

Code:
StringToSearch = "HLXGDHSHDHS"
Set RegularExpressionObject = New regExp

With RegularExpressionObject
.Pattern = "[A-Z]{,4}"
.IgnoreCase = True
.Global = True
End With

expressionmatch = RegularExpressionObject.Test(StringToSearch)

If expressionmatch Then
MsgBox "JO"
Else
MsgBox "NEIN"
End If

Nun sage ich doch mit der Expression, dass A-Z maximal 4 mal vorkommen darf. Die Länge des Stringe ist aber doch viel länger. Demnach müsste die MsgBox "NEIN" ausgeben. Das tut es auch, jedoch wird die Message auch bei 3 Buchstaben ausgegeben.

Bitte sagt nicht, dass ich einfach mit Len() die Länge abfragen kann. Ich möchte im Endeffekt darauf aufbauen und es sollen in den ersten 4 Zeichen NUR Buchstaben möglich sein, keine Zahlen.

Was mache ich falsch?

Danke
 
Hi.
Hallo,
ich bins mal wieder. Ich kämpfe derzeit mit regulären Ausdrücken in VBA und komme damit nicht ganz klar.

Folgendes habe ich zum Test entworfen:

Code:
StringToSearch = "HLXGDHSHDHS"
Set RegularExpressionObject = New regExp

With RegularExpressionObject
.Pattern = "[A-Z]{,4}"
.IgnoreCase = True
.Global = True
End With

expressionmatch = RegularExpressionObject.Test(StringToSearch)

If expressionmatch Then
MsgBox "JO"
Else
MsgBox "NEIN"
End If

Nun sage ich doch mit der Expression, dass A-Z maximal 4 mal vorkommen darf. Die Länge des Stringe ist aber doch viel länger. Demnach müsste die MsgBox "NEIN" ausgeben. Das tut es auch, jedoch wird die Message auch bei 3 Buchstaben ausgegeben.

Bitte sagt nicht, dass ich einfach mit Len() die Länge abfragen kann. Ich möchte im Endeffekt darauf aufbauen und es sollen in den ersten 4 Zeichen NUR Buchstaben möglich sein, keine Zahlen.

Was mache ich falsch?
Erstens funktioniert anscheinend das Weglassen der Untergrenze bei einer Wiederholung nicht. D.h. du müßtest schreiben "[A-Z]{0,4}".

Dann führst du eine Suche mit der .Test() Methode durch. Das heißt du suchst nach einer Folge von Buchstaben der Länge 0 bis 4. Allerdings ist in jedem String eine Folge von Buchstaben der Länge 0 enthalten.

Wenn du testen möchtest ob der String mit genau 4 Buchstaben beginnt, dann geht das so:
Visual Basic:
With RegularExpressionObject
.Pattern = "^[A-Z]{4}"
.IgnoreCase = True
End With
Um zu prüfen, ob der String aus bis zu 4 Buchstaben besteht, müßtest du "^[A-Z]{0,4}$" verwenden.

Gruß
 
Zurück