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?
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 .+
: