Was bedeutet (? = x) in Regex?

8

Was bedeutet (?<=x) in Regex?

Übrigens, ich habe das Handbuch hier gelesen.

    
mays 26.02.2010, 11:26
quelle

5 Antworten

10

Es ist ein positiver Lookbehind .

  

(?<=a)b (positive lookbehind) stimmt mit der b (und nur der b ) in cab überein, stimmt aber nicht mit bed oder debt überein.

Sie werden es in keinem JavaScript-Handbuch finden, da in JavaScript regex nicht unterstützt wird :

  

Schließlich unterstützen Flavors wie JavaScript, Ruby und Tcl überhaupt kein Lookbehind, obwohl sie Lookahead unterstützen.

    
Skilldrick 26.02.2010, 11:29
quelle
2

Aus der Python-Dokumentation re :

(?<=...)

  

Entspricht, wenn der aktuellen Position in der Zeichenfolge eine Übereinstimmung für ... vorangestellt ist, die an der aktuellen Position endet. Dies wird als positive Lookbehind-Assertion bezeichnet. (?<=abc)def findet eine Übereinstimmung in abcdef , da das Lookbehind 3 Zeichen sichert und überprüft, ob das enthaltene Muster übereinstimmt. Das enthaltene Muster darf nur Strings mit fester Länge enthalten, dh abc oder a|b sind erlaubt, a* und a{3,4} nicht. Beachten Sie, dass Muster, die mit positiven Lookbehind-Assertionen beginnen, am Anfang der zu durchsuchenden Zeichenfolge nicht übereinstimmen. Sie werden höchstwahrscheinlich die Funktion search () anstelle der Funktion match () verwenden wollen:

%Vor%
  

Dieses Beispiel sucht nach einem Bindestrich nach einem Wort:

%Vor%     
Ignacio Vazquez-Abrams 26.02.2010 11:29
quelle
2

Es heißt ein positiver Blick hinter sich, es sucht rückwärts nach dem Zeichen x, beachten Sie, dass dies von JavaScript nicht unterstützt wird. Für zukünftige Referenz, hier ist ein besseres Handbuch :)

    
Nick Craver 26.02.2010 11:31
quelle
1

Von regulary-expressions.info :

  

Null-Breite positiver Lookbehind. Passt zu einer Position, wenn das Muster innerhalb des Lookahead angepasst werden kann und an dieser Position endet (d. H. Links von dieser Position). Abhängig von der Regex-Variante, die Sie verwenden, können Sie innerhalb von Lookbehind möglicherweise keine Quantifizierer und / oder Alternativen verwenden.

    
Ikke 26.02.2010 11:29
quelle
1

Sie betrachten eine positive Lookbehind-Behauptung .

    
Otto Allmendinger 26.02.2010 11:33
quelle

Tags und Links