vba positive Lookahead ist zu gierig

8

Ich verwende Access VBA, um eine Zeichenfolge mit Regex zu analysieren. Hier ist meine Regex-Funktion:

%Vor%

Wenn ich es mit:

teste %Vor%

Ich erwarte zu bekommen:

%Vor%

, weil die einzigen Zeichen zwischen dieser und der ersten Instanz von 'MP' diejenigen in der Klasse sind, die im Lookahead angegeben ist.

aber mein tatsächlicher Rückgabewert ist:

%Vor%

Warum fängt es bis zum zweiten "MP" auf?

    
sigil 28.09.2011, 19:39
quelle

1 Antwort

12

Weil .+ standardmäßig gierig ist. Der .+ verschlingt jedes Zeichen, bis es auf ein Zeilenumbruch-Zeichen oder das Ende der Eingabe trifft. Wenn dies geschieht, wird auf die letzte MP (die zweite in Ihrem Fall) zurückverfolgt.

Was Sie wollen, ist nicht gierig . Dies können Sie tun, indem Sie eine ? nach .+ :

platzieren %Vor%     
Bart Kiers 28.09.2011, 19:43
quelle

Tags und Links