Direkt zum Inhalt

Windows-Platzhalter und reguläre Windows-Ausdrücke

Windows-Platzhalter können Sie eine Datei oder eine Gruppe von Dateien angeben, indem Sie einen Teil des Dateinamens eingeben. Das entsprechende Verzeichnis wird durchsucht, um alle Dateien zu finden, die dem Teilnamen entsprechen. Sie können auch verwenden reguläre Ausdrücke verwenden um Dateien bei der Verwendung anzugeben TCC (siehe unten).

Zur Angabe der Dateien werden üblicherweise Platzhalter verwendet sollte durch einen Befehl verarbeitet werden. Wenn Sie angeben müssen, welche Dateien verwendet werden sollen nicht verarbeitet werden, siehe Dateiausschlussbereiche (Für TCC interne Befehle), oder AUSSER (für externe Befehle).

Die meisten internen Befehle in TCC oder CMD akzeptieren Dateinamen mit Platzhaltern überall dort, wo ein vollständiger Dateiname verwendet werden kann. Es gibt zwei Platzhalterzeichen, das Sternchen * und das Fragezeichen ?. Außerdem in TCC Sie können einen Zeichensatz angeben (siehe unten).

WARNUNG: Wenn Sie einen Platzhalter verwenden, suchen Sie nach Dateien, die in einem Befehl wie verarbeitet werden sollen FÜR or DOund Sie neue Dateinamen erstellen (sei es durch Umbenennen vorhandener Dateien oder durch Erstellen neuer Dateien), stimmen die neuen Dateinamen möglicherweise mit Ihrem Auswahlplatzhalter überein und veranlassen Sie, sie erneut zu verarbeiten.

Sternchen * Platzhalter

An Sternchen * in einer Dateispezifikation bedeutet „ein Satz beliebiger Zeichen oder kein Zeichen an dieser Position“. Der folgende Befehl zeigt beispielsweise eine Liste aller Dateien an (einschließlich Verzeichnissen, jedoch mit Ausnahme derjenigen Dateien und Verzeichnisse mit mindestens einem der Attribute). versteckt und System) im aktuellen Verzeichnis:

    sagen *

Wenn Sie alle Dateien mit a sehen möchten .TXT Erweiterung:

    dir*.txt

Wenn Sie wissen, dass die gesuchte Datei einen Basisnamen hat, der mit beginnt ST und eine Erweiterung, die mit beginnt .D, Sie können es so finden. Dateinamen wie STATE.DAT, STEVEN.DOC, und ST.D werden alle angezeigt:

    dir st*.d*

TCC Sie können außerdem das Sternchen verwenden, um Dateinamen mit bestimmten Buchstaben irgendwo im Namen abzugleichen. Im folgenden Beispiel wird jede Datei mit a angezeigt .TXT Erweiterung, die die Buchstaben enthält AM irgendwo innerhalb seines Basisnamens zusammen. Es wird beispielsweise angezeigt AMPLE.TXT, STAMP.TXT, CLAM.TXT und AM.TXT, aber es wird ignoriert CLAIM.TXT:

    dir *am*.txt

Fragezeichen ? Platzhalter

A Fragezeichen ? entspricht jedem einzelnen Dateinamenzeichen. Sie können das Fragezeichen an einer beliebigen Stelle in einem Dateinamen platzieren und so viele Fragezeichen verwenden, wie Sie benötigen. Im folgenden Beispiel werden Dateien mit Namen wie angezeigt BRIEF.DOC, LETTER.DAT, und LITTER.DU:

    dir l?tter.d??

Die Verwendung eines Sternchen-Platzhalters vor anderen Zeichen und der unten erläuterten Zeichenbereiche stellen Verbesserungen der standardmäßigen Microsoft-Platzhaltersyntax dar und funktionieren wahrscheinlich nicht ordnungsgemäß mit anderer Software als TCC.

„Zusätzliche“ Fragezeichen in Ihrer Wildcard-Angabe werden ignoriert, wenn der Dateiname kürzer als die Wildcard-Angabe ist. Wenn Sie beispielsweise Dateien aufgerufen haben BRIEF.DOC, BRIEF1.DOC und BRIEF.DOC, dieser Befehl zeigt alle drei Namen an:

  dir Brief?.doc

Die Datei BRIEF.DOC ist in der Anzeige enthalten, da am Ende das „zusätzliche“ Fragezeichen steht BRIEF? wird beim Abgleich mit dem kürzeren Namen ignoriert LETTER.

Platzhalter für Zeichensätze

In einigen Fällen, die ? Platzhalter ist möglicherweise zu allgemein. TCC (aber nicht CMD) Außerdem können Sie durch die Verwendung von eckigen Klammern den genauen Satz von Zeichen angeben, die Sie an einer bestimmten Position im Dateinamen akzeptieren (oder ausschließen) möchten []. In die Klammern können Sie die einzelnen zulässigen Zeichen oder Zeichenbereiche einfügen. Zum Beispiel, wenn Sie eine Übereinstimmung wünschen BRIEF0.DOC bis BRIEF9.DOC, könnten Sie diesen Befehl verwenden:

  Dir Brief[0-9].doc

Auf diese Weise können Sie alle Dateien finden, deren Name einen Vokal als zweiten Buchstaben enthält. Dieses Beispiel zeigt auch, wie die Platzhalterzeichen gemischt werden:

  dir ?[aeiouy]*

Sie können eine Gruppe von Zeichen oder einen Zeichenbereich ausschließen, indem Sie ein Ausrufezeichen verwenden [!] als erstes Zeichen in den Klammern. In diesem Beispiel werden alle Dateinamen angezeigt, die mindestens zwei Zeichen lang sind, mit Ausnahme derjenigen, deren Name einen Vokal als zweiten Buchstaben enthält:

  dir ?[!aeiouy]*

Das nächste Beispiel, das Dateien wie auswählt AIP, BIP und TIPP aber nicht NIPdemonstriert, wie Sie mehrere Bereiche innerhalb der Klammern verwenden können. Es wird eine Datei akzeptiert, die mit einem beginnt A, B, C, D, T, U, oder V:

  dir [a-dt-v]ip

Sie können in den Klammern ein Fragezeichen verwenden, dessen Bedeutung sich jedoch geringfügig von der eines normalen Fragezeichen-Platzhalters (ohne Klammer) unterscheidet. Ein normaler Fragezeichen-Platzhalter stimmt mit jedem Zeichen überein, wird jedoch ignoriert, wenn ein Name gefunden wird, der kürzer als die Platzhalterspezifikation ist, wie oben beschrieben. Ein Fragezeichen in eckigen Klammern stimmt mit jedem Zeichen überein nicht werden verworfen, wenn kürzere Dateinamen abgeglichen werden. Zum Beispiel:

  dir Buchstabe[?].doc

wird angezeigt BRIEF1.DOC und BRIEF.DOC, Aber nicht BRIEF.DOC.

Sie können jedes der Platzhalterzeichen in jeder gewünschten Kombination innerhalb eines einzelnen Dateinamens wiederholen. Der folgende Befehl listet beispielsweise alle Dateien auf, die ein haben A, B, oder C als drittes Zeichen, gefolgt von null oder mehr zusätzlichen Zeichen, gefolgt von einem D, E, oder F, optional gefolgt von einigen zusätzlichen Zeichen und einer Erweiterung, die mit beginnt P or Q. Wahrscheinlich müssen Sie nichts so Komplexes tun, aber wir haben es eingefügt, um Ihnen die Flexibilität erweiterter Platzhalter zu zeigen:

  dir ??[abc]*[def]*.[pq]*

Sie können auch die Platzhaltersyntax in eckigen Klammern verwenden, um einen Konflikt zwischen langen Dateinamen mit Semikolons zu umgehen [;] und die Verwendung eines Semikolons zur Angabe von Liste einschließen. Wenn Sie beispielsweise eine Datei auf einem LFN-Laufwerk mit dem Namen haben C:\DATA\LETTER1;V2 und Sie geben diesen Befehl ein:

  del \data\letter1;v2

Sie werden nicht die Ergebnisse erzielen, die Sie erwarten. Anstatt die genannte Datei zu löschen, TCC werde versuchen zu löschen BRIEF1 und dann V2, weil das Semikolon ein angibt Liste einschließen. Wenn Sie jedoch eckige Klammern um das Semikolon verwenden, wird es als Dateinamenzeichen und nicht als Trennzeichen für die Include-Liste interpretiert. Dieser Befehl würde beispielsweise die oben genannte Datei löschen:

  del \data\letter1[;]v2

Passende kurze Dateinamen (SFNs)

Wenn die Konfigurationsoption „Nach SFNs suchen“ aktiviert ist, in TCC Platzhaltersuchen akzeptieren eine Übereinstimmung auf beiden LFN or die SFN, um dem Verhalten von zu entsprechen CMD. Dies kann dazu führen, dass einige Dateien nur aufgrund der SFN-Übereinstimmung gefunden werden. In den meisten Situationen ist dies eigentlich nicht erwünscht und kann durch Deaktivieren der Option vermieden werden (der Standard).

Hinweis: Die Wildcard Der Expansionsprozess wird versuchen, beides zu ermöglichen CMD-style „Erweiterung“-Matching (nur eine Erweiterung am Ende des Wortes) und die erweiterte TCC Dateinamensübereinstimmung (ermöglicht Dinge wie *.*.abc), wenn im Ziel von a ein Sternchen gefunden wird  COPY, MOVE or REN / UMBENENNEN Befehl.

Platzhalter in Verzeichnisnamen

TCC (aber nicht CMD) unterstützt Platzhalter in den Verzeichnisnamen (aber nicht im Laufwerksnamen) für intern TCC Befehle und Funktionen. Diese Arten von Platzhaltern kommen unter Linux häufig vor, werden jedoch in CMD und den meisten Windows-Apps nicht unterstützt.

Sie können die Rekursion des Unterverzeichnisses steuern, indem Sie Folgendes angeben * or ** in dem Weg. A * entspricht einer einzelnen Unterverzeichnisebene; A ** stimmt mit allen Unterverzeichnisebenen für diesen Pfadnamen überein. Verzeichnisplatzhalter unterstützen auch reguläre Ausdrücke. Verzeichnis-Platzhalter können nicht mit der Option /O:... verwendet werden (die Einträge sortiert, bevor der Befehl ausgeführt wird). Und denken Sie sorgfältig darüber nach, bevor Sie Verzeichnis-Platzhalter mit der Option /S (rekursive Unterverzeichnisse) verwenden, da dies mit ziemlicher Sicherheit zu unerwarteten Ergebnissen führt!

Zum Beispiel, um die Datei zu löschen foobar in einem beliebigen Unterverzeichnis von c:\test\test2 (aber nicht in einem ihrer Unterverzeichnisse):

    del c:\test\test2\*\foobar

Um die Datei zu löschen foobar in jedem Unterverzeichnis unter c:\test (und allen Unterverzeichnissen), dessen Name irgendwo „foo“ enthält:

    del c:\test\**\*foo*\foobar

Um die Datei zu löschen foobar in einem beliebigen Unterverzeichnis von c:\test, das mit a beginnt t und endet mit a 2:

    del c:\test\t*2\foobar

Es gibt einige Befehle, die Verzeichnis-Platzhalter nicht unterstützen, da diese bedeutungslos oder destruktiv wären (z. B. TREE, @FILEOPEN, @FILEDATE usw.).

Reguläre Windows-Ausdrücke in TCC

Zusätzlich zu erweitert Windows-Platzhalter (*, ?, Und [...]), TCC unterstützt die Verwendung von Platzhalter für reguläre Ausdrücke zum Abgleichen und Ersetzen von Dateinamen in internen Dateiverwaltungsbefehlen (COPY, DEL, DIR, MOVE, REN usw.). Sie können die Syntax des regulären Ausdrucks auswählen, die Sie verwenden möchten: TCC unterstützt reguläre Ausdrücke von Perl, Ruby, Java, grep, POSIX, gnu, Python und Emacs.

Die Syntax lautet:

    ::regex

Beispielsweise:

    dir ::ca[td]

Beachten Sie, dass mit Reguläre Windows-Ausdrücke verlangsamt Ihre Verzeichnissuche etwas – da Windows sie nicht nativ unterstützt TCC Der Parser muss den Dateinamen in konvertieren *, rufen Sie alle Dateinamen ab und ordnen Sie sie dann dem regulären Ausdruck zu.

Wenn Ihr regulärer Ausdruck Sonderzeichen (Leerzeichen, Umleitungszeichen, Escape-Zeichen usw.) enthält, müssen Sie diese in doppelte Anführungszeichen setzen. Zum Beispiel:

    dir "::^\w{1,8}\.btm$"

Für weitere Informationen über Platzhalter für reguläre Ausdrücke Syntax, siehe Syntax für reguläre Ausdrücke der Take Command helfen.

Um die Erstellung und das Testen regulärer Ausdrücke zu vereinfachen, bietet TAke Command und TCC Fügen Sie ein Dialogfeld zur Analyse regulärer Ausdrücke hinzu (Strg-F7 aus dem TCC Befehlszeile oder im Menü „Extras“ in Take Command.) Es gibt zwei Bearbeitungsfelder:

  1. Die erste besteht darin, den regulären Ausdruck zu testen. Wenn der reguläre Ausdruck gültig ist, wird im Dialogfeld ein grünes Häkchen rechts neben dem Bearbeitungsfeld für den Ausdruck angezeigt. Wenn der reguläre Ausdruck ungültig ist, wird im Dialogfeld ein rotes X angezeigt.
  2. Das zweite Bearbeitungsfeld ist für den Text, den Sie mit dem regulären Ausdruck abgleichen möchten. Wenn der Text mit dem regulären Ausdruck übereinstimmt, wird im Dialogfeld rechts neben dem Testbearbeitungsfeld ein grünes Häkchen angezeigt. Wenn der Text nicht übereinstimmt, wird im Dialogfeld ein rotes X angezeigt.

TCC Windows-Analysator für reguläre Ausdrücke/Windows-Platzhalter

Onigmo-Syntax für reguläre Ausdrücke (Version 6.2.0) in Take Command / TCC

In diesem Abschnitt wird die standardmäßige Ruby-Syntax für reguläre Ausdrücke behandelt. Informationen zu anderen regulären Ausdruckssyntaxen (Perl, Python, Java usw.) finden Sie in der entsprechenden Dokumentation für das jeweilige Produkt.

Syntaxelemente

\ Escape (Meta-Zeichenbedeutung aktivieren oder deaktivieren)
| Wechsel
(...) Gruppe
[...] Zeichenklasse  

Personen

\t horizontaler Tab (0x09)
\v Vertikaler Tab   (0x0B)
\n Zeilenumbruch        (0x0A)
\r Rückkehr (0x0D)
\b Rücktaste     (0x08)
\f Formularvorschub      (0x0C)
\a Glocke           (0x07)
\e Escape         (0x1B)
\nnn Oktalzeichen            (codierter Bytewert)
\xHH Hexadezimalzeichen      (codierter Bytewert)
\x{7HHHHHHH} breites Hexadezimalzeichen (Punktwert des Zeichencodes)
\cx Steuerzeichen          (Punktwert des Zeichencodes)
\Cx Steuerzeichen          (Punktwert des Zeichencodes)
\Mx meta  (x|0x80)        (Punktwert des Zeichencodes)
\M-\Cx Meta-Steuerzeichen     (Punktwert des Zeichencodes)
(* \b ist nur in der Zeichenklasse wirksam [...])

Charaktertypen

. beliebiges Zeichen (außer Zeilenumbruch)
\w Wortzeichen
Nicht Unicode:
            alphanumerische, „_“ und Multibyte-Zeichen. 
Unicode:
General_Category – (Buchstabe|Markierung|Nummer|Verbindungszeichen)
\W       Nicht-Wort-Zeichen
\s Leerzeichen
Nicht Unicode:
\t, \n, \v, \f, \r, \x20
Unicode:
0009, 000A, 000B, 000C, 000D, 0085(NEL), 
General_Category – Line_Separator
                     -- Paragraph_Separator
                      -- Space_Separator
\S Nicht-Leerzeichen
\d Dezimalziffer Zeichen
Unicode: General_Category – Decimal_Number
\D nicht-dezimales Ziffernzeichen
\h Hexadezimale Ziffer char   [0-9a-fA-F]
\H nicht hexadezimales Ziffernzeichen
Zeicheneigenschaft
* \p{Eigenschaftsname}
* \p{^property-name}    (negativ)
* \P{property-name}     (negativ)
Name des Anwesens:
+ Funktioniert bei allen Kodierungen
Alnum, Alpha, Leerzeichen, Strg, Ziffer, Diagramm, unten, Drucken, Punkt, Leerzeichen, oben, XDigit, Wort, ASCII,
     + funktioniert auf UTF8, UTF16, UTF32
  \R       Zeilenumbruch
           Unicode:
             (?>\x0D\x0A|[\x0A-\x0D\x{85}\x{2028}\x{2029}])
           Nicht Unicode:
             (?>\x0D\x0A|[\x0A-\x0D])
  \X       eXtended Graphem-Cluster
           Unicode:
             (?>\P{M}\p{M}*)
           Nicht Unicode:
             (?M:.)

Quantifizieren

gierig
? 1 oder 0 Mal
*       0 oder öfter
+       1 oder mehrmals
{n,m}   mindestens n, aber nicht mehr als m Mal
{n,}    mindestens n-mal
{,n}   mindestens 0, aber nicht mehr als n-mal ({0,n})
{n}     n Mal
widerstrebend
?? 1 oder 0 Mal
*? 0 oder öfter
+? 1 oder mehrmals
{n,m}? mindestens n, aber nicht mehr als m-mal  
{N,}? mindestens n-mal
{,N}? mindestens 0, aber nicht mehr als n-mal (== {0,n}?)
besitzergreifend (gierig und macht nach Wiederholung keinen Rückzieher)
?+      1 oder 0 Mal
*+      0 oder öfter
++      1 oder mehr Mal
({n,m}+, {n,}+, {n}+ sind Possessivoperationen. nur in ONIG_SYNTAX_JAVA)
ex. /a*+/ === /(?>a*)/

Anker

^ Anfang der Zeile
$ Ende der Zeile
\b Wortgrenze
\B keine Wortgrenze
\A Anfang der Zeichenfolge
\Z Ende der Zeichenfolge oder vor dem Zeilenumbruch am Ende
\z Ende der Zeichenfolge
\G passende Startposition (*)

Zeichenklasse

^... negative Klasse (Operator mit niedrigster Priorität)
xy reichen von x bis y
[...] set (Zeichenklasse in Zeichenklasse)
..&&.. Kreuzung (niedrige Priorität am nächsten von ^)
          
ex. [a-w&&[^c-g]z] ==> ([a-w] UND ([^c-g] ODER z)) ==> [abh-w]
* Wenn Sie „[“, „-“, „]“ als normales Zeichen in einer Zeichenklasse verwenden möchten, sollten Sie diese Zeichen mit „\“ maskieren.
POSIX-Klammer ([:xxxxx:], negieren [:^xxxxx:])
Nicht Unicode-Fall:
alnum Alphabet- oder Ziffernzeichen
Alpha Alphabet
ASCII Codewert: [0 - 127]
leer \t, \x20
Strg
Ziffer 0-9
Graph Alle Multibyte-kodierten Zeichen einschließen
senken
drucken Alle Multibyte-kodierten Zeichen einschließen
Punkt
Raum \t, \n, \v, \f, \r, \x20
obere
Wort alphanumerische, „_“- und Multibyte-Zeichen
xStelle 0-9, af, af
Unicode-Fall:
alnum Brief | Mark | Dezimalzahl
Alpha Brief | Markieren
ASCII 0000 - 007F
leer Space_Separator | 0009
Strg Kontrolle | Formatieren | Nicht zugewiesen | Private_Use | Surrogat
Ziffer Dezimalzahl
Graph [[:^space:]] && ^Control && ^Unassigned && ^Surrogate
senken Kleinbuchstabe
drucken [[:graph:]] | [[:Raum:]]
Punkt Connector_Interpunktion | Dash_Punctuation | Close_Interpunktion | Final_Interpunktion | Initial_Interpunktion | Andere_Interpunktion | Open_Interpunktion
Raum Space_Separator | Zeilentrenner | Absatztrennzeichen | 0009 | 000A | 000B | 000C | 000D | 0085
obere Großbuchstabe
Wort Brief | Mark | Dezimalzahl | Connector_Interpunktion
xStelle 0030 - 0039 | 0041 - 0046 | 0061 - 0066 (0-9, af, AF)

Erweiterte Gruppen

(?#...) Kommentar
(?imxdau-imx)      Option ein/aus
i: Groß-/Kleinschreibung ignorieren
m: mehrzeilig (Punkt(.) passt zu Zeilenumbruch)
x: erweiterte Form
Zeichensatzoption (Zeichenbereichsoption)
d: Standard (kompatibel mit Ruby 1.9.3)
\w, \d und \s stimmen nicht mit Nicht-ASCII-Zeichen überein.
\b-, \B- und POSIX-Klammern verwenden die Regeln der jeweiligen Kodierung.
a: ASCII
Die Option ONIG_OPTION_ASCII_RANGE ist aktiviert.
 \w, \d, \s und POSIX-Klammern stimmen nicht mit Nicht-ASCII-Zeichen überein.
\b und \B verwenden die ASCII-Regeln.
 u: Unicode
Die Option ONIG_OPTION_ASCII_RANGE ist deaktiviert.
 \w (\W), \d (\D), \s (\S), \b (\B) und POSIX-Klammern verwenden die Regeln der jeweiligen Kodierung.
(?imxdau-imx:subexp) Option ein/aus für Unterexp
(?:subexp) nicht erfasste Gruppe
(Unterexp) gefangene Gruppe
(?=subexp) Schau voraus
(?!subexp) negativer Ausblick
(?<=subexp) Schau hinter dich
(? negativer Rückblick
Subexp von Look-Behind muss eine feste Zeichenlänge haben. Unterschiedliche Zeichenlängen sind jedoch nur in Alternativen der obersten Ebene zulässig.
ex. (?<=a|bc) ist in Ordnung. (?<=aaa(?:b|cd)) ist nicht zulässig.
Im negativen Look-Behind ist die gefangene Gruppe nicht erlaubt, aber die schüchterne Gruppe (?:) ist erlaubt.
\K halten
Ein weiterer Ausdruck des Zurückblickens. Behalten Sie den Rest des \K bei und schließen Sie ihn nicht in das Ergebnis ein.
(?>subexp) Atomgruppe
Gehen Sie in Subexp nicht zurück.
(?subexp) Benannte Gruppe definieren
(Alle Zeichen des Namens müssen Wortzeichen sein. Und das erste Zeichen darf keine Ziffer oder ein Großbuchstabe sein.)
Es wird nicht nur ein Name, sondern auch eine Nummer zugewiesen, wie bei einer erfassten Gruppe.
Die Zuweisung desselben Namens für zwei oder mehr Subexps ist zulässig. In diesem Fall kann ein Subexp-Aufruf nicht durchgeführt werden, obwohl die Rückreferenz möglich ist.
  (?(cond)yes-subexp), (?(cond)yes-subexp|no-subexp)
                    bedingter Ausdruck
                    Entspricht „yes-subexp“, wenn (cond) einen wahren Wert liefert, andernfalls entspricht „no-subexp“.
                    Folgendes (cond) kann verwendet werden:
                    (n) (n >= 1)
                        Überprüft, ob die nummerierte Erfassungsgruppe mit etwas übereinstimmt.
                    (), ('Name')
                        Überprüft, ob eine Gruppe mit dem angegebenen Namen mit etwas übereinstimmt.

Rückverweis

\n Rückverweis nach Gruppennummer (n >= 1)
\k Rückverweis nach Gruppennummer (n >= 1)
\k'n' Rückverweis nach Gruppennummer (n >= 1)
\k Rückverweis durch relative Gruppennummer (n >= 1)
\k'-n' Rückverweis durch relative Gruppennummer (n >= 1)
\k Rückverweis nach Gruppenname
\k'name' Rückverweis nach Gruppenname
Bei der Rückreferenz durch den Multiplex-Definitionsnamen wird vorzugsweise auf einen Subexp mit einer großen Zahl verwiesen. (Wenn keine Übereinstimmung vorliegt, wird auf eine Gruppe mit der kleinen Zahl verwiesen.)
* Rückverweise nach Gruppennummer sind verboten, wenn eine benannte Gruppe im Muster definiert ist und ONIG_OPTION_CAPTURE_GROUP nicht festgelegt ist.

Rückreferenz mit Verschachtelungsebene
Level: 0, 1, 2, ...
\k     (n >= 1)
\k     (n >= 1)
\k'n+level'    ​​ (n >= 1)
\k'n-level'    ​​ (n >= 1)
\k    (n >= 1)
\k    (n >= 1)
\k'-n+level'    ​​(n >= 1)
\k'-n-level'    ​​(n >= 1)
\k
\k
\k'Name+Ebene'
\k'name-level'
Bestimmen Sie die relative Verschachtelungsebene ausgehend von der hinteren Referenzposition.  
Beispiel 1.
/\A(?|.|(?:(?.)\g\k))\z/.match("reer")
Beispiel 2.
r = Regexp.compile(<<'__REGEXP__'.strip, Regexp::EXTENDED)
(? \g \g* \g ){0}
(? \s* > ){0}
(? [a-zA-Z_:]+ ){0}
(? [^ | [^<&]+)* ){0}
(? >){1}
\g
__REGEXP__
p r.match('fbbbf').captures

Subexp-Anruf („Tanaka Akira Special“)

\g Anruf nach Gruppennamen
\g'Name' Anruf nach Gruppennamen
\g Anruf nach Gruppennummer (n >= 1)
\g'n' Anruf nach Gruppennummer (n >= 1)
\g       rufen Sie das gesamte Muster rekursiv auf
\g'0'       rufen Sie das gesamte Muster rekursiv auf
\g      Anruf nach relativer Gruppennummer (n >= 1)
\g'-n'      Aufruf nach relativer Gruppennummer (n >= 1)
\g      Aufruf nach relativer Gruppennummer (n >= 1)
\g'+n'      Aufruf nach relativer Gruppennummer (n >= 1)
* Ein rekursiver Aufruf ganz links ist nicht zulässig.
ex. (?a|\gb)   => Fehler
(?a|b\gc)  => OK
* Der Aufruf nach Gruppennummer ist verboten, wenn eine benannte Gruppe im Muster definiert ist und ONIG_OPTION_CAPTURE_GROUP nicht festgelegt ist.
* Wenn sich der Optionsstatus der angerufenen Gruppe von der Anrufposition unterscheidet, ist die Option der Gruppe wirksam.
ex. (?-i:\g)(?i:(?a)){0}  Übereinstimmung mit „A“
Perl-Syntax: Verwenden Sie stattdessen (?&name), (?n), (?-n), (?+n), (?R) oder (?0).

Erfasste Gruppe

Das Verhalten der nicht benannten Gruppe (...) ändert sich unter den folgenden Bedingungen. (Die benannte Gruppe wird jedoch nicht geändert.)
Fall 1. /.../    (benannte Gruppe wird nicht verwendet, keine Option)
(...) wird als erfasste Gruppe behandelt.
Fall 2. /.../g    (benannte Gruppe wird nicht verwendet, Option „g“)
(...) wird als nicht erfasste Gruppe (?:...) behandelt.
Fall 3. /..(?..)../    (benannte Gruppe wird verwendet, keine Option)
(...) wird als nicht erfasste Gruppe (?:...) behandelt.
numbered-backref/call ist nicht erlaubt.
Fall 4. /..(?..)../G    (benannte Gruppe wird verwendet, Option „G“)
(...) wird als erfasste Gruppe behandelt.
numbered-backref/call ist erlaubt.
woher
g: ONIG_OPTION_DONT_CAPTURE_GROUP
G: ONIG_OPTION_CAPTURE_GROUP

Syntaxabhängige Optionen

+ RUBIN
(?m): Punkt(.) passt zu Zeilenumbruch
+ PERL, JAVA und Python
(?s): Punkt(.) entspricht Zeilenumbruch
(?m): ^ Übereinstimmung nach Newline, $ Übereinstimmung vor Newline
+ PERL
(?d), (?l): dasselbe wie (?u)

Ursprüngliche Erweiterungen

+ hexadezimale Ziffer Zeichentyp  \h, \H
+ benannte Gruppe              (?...)
+ benannte Backref            \k
+ Subexp-Aufruf                  \g, \g