Was macht (?: do in einem regulären Ausdruck

9

Ich bin auf einen regulären Ausdruck gestoßen, den ich nicht ganz verstehe - kann jemand mir helfen, ihn zu entziffern:

%Vor%

Es wird in der URL-Übereinstimmung verwendet und das obige Beispiel entspricht den folgenden URLs:

%Vor%

Es scheint mir, dass die Fragezeichen in den Klammern (?: nichts bewirken. Kann mich jemand aufklären?

Die Version von regex, die verwendet wird, ist diejenige, die mit Classic ASP geliefert wird und auf dem Server ausgeführt wird, wenn das überhaupt hilft.

    
Graham 03.01.2013, 11:35
quelle

2 Antworten

14

(?:) erstellt eine nicht erfassende Gruppe . Es gruppiert Dinge zusammen, ohne eine Rückreferenz zu erstellen.

Eine Rückreferenz ist ein Teil, auf den Sie im Ausdruck verweisen können, oder eine mögliche Ersetzung (normalerweise mit oder usw. - je nach Geschmack). Sie können sie normalerweise auch später aus einer Übereinstimmung extrahieren, wenn Sie regex in einer Programmiersprache verwenden. Der einzige Grund für die Verwendung von (?:) besteht darin, das Erstellen einer neuen Rückreferenz zu vermeiden, die das Erhöhen der Gruppennummer vermeidet und (eine normalerweise vernachlässigbare Menge an Speicher) speichert (

)     
Matti Virkkunen 03.01.2013, 11:37
quelle
3

Es ist eine Nicht-Capture-Gruppe, die im Wesentlichen die gleiche ist wie die Verwendung von (...) , aber der Inhalt wird nicht beibehalten (nicht als Rückverweis verfügbar).

Wenn Sie so etwas tun: (abc)(?:123)(def) Sie erhalten abc in und def in , aber 123 wird nur gefunden.

    
Mario 03.01.2013 11:38
quelle

Tags und Links