Wie verwenden Sie doppelte Klammern in einem regulären Ausdruck?

8

Was bedeuten doppelte eckige Klammern in einer Regex? Ich bin verwirrt über die folgenden Beispiele:

%Vor%

Ich habe mit Rubular getestet, aber ich habe keinen Unterschied zwischen dem mit doppelten Klammern und einzelnen Klammern gesehen.

    
runcode 05.09.2012, 06:02
quelle

2 Antworten

8

Posix-Zeichenklassen verwenden eine [:alpha:] -Notation, die innerhalb von a verwendet wird regulärer Ausdruck wie:

%Vor%

Sie müssen nach unten scrollen, um zu den Posix-Informationen im obigen Link zu gelangen. Aus der Dokumentation:

  

POSIX-Klammerausdrücke sind auch ähnlich wie Zeichenklassen. Sie bieten eine portable Alternative zu den oben genannten, mit dem zusätzlichen Vorteil, dass sie Nicht-ASCII-Zeichen umfassen. Zum Beispiel passt / \ d / nur auf die ASCII-Dezimalziffern (0-9); während / [[: digit:]] / mit einem beliebigen Zeichen in der Unicode-Nd-Kategorie übereinstimmt.

%Vor%
  

Ruby unterstützt auch die folgenden Nicht-POSIX-Zeichenklassen:

%Vor%     
the Tin Man 05.09.2012, 07:16
quelle
4

'[[' hat keine besondere Bedeutung. [xyz] ist eine Zeichenklasse und entspricht einem einzelnen x , y oder z . Das Karat ^ nimmt alle Zeichen, die nicht in den Klammern stehen.

Entfernen von ^ zur Vereinfachung, Sie können sehen, dass die erste offene Klammer mit der ersten geschlossenen Klammer übereinstimmt und die zweite geschlossene Klammer als Teil der Zeichenklasse verwendet wird. Die letzte geschlossene Klammer wird als ein anderes zu vergleichendes Zeichen behandelt.

%Vor%

Dies scheint in einigen Fällen das gleiche Ergebnis wie das Original zu haben

%Vor%

Aber das liegt nur daran, dass Ihr regulärer Ausdruck nicht nach einer genauen Übereinstimmung sucht.

%Vor%     
dfb 05.09.2012 06:19
quelle

Tags und Links