Heim > Backend-Entwicklung > Golang > Wie geht die Funktion „ReplaceAllString' von Go mit der Ersetzung von „$1W' um, wenn die Erfassungsgruppe „1W' nicht im regulären Ausdruck definiert ist?

Wie geht die Funktion „ReplaceAllString' von Go mit der Ersetzung von „$1W' um, wenn die Erfassungsgruppe „1W' nicht im regulären Ausdruck definiert ist?

Mary-Kate Olsen
Freigeben: 2024-10-30 03:05:03
Original
443 Leute haben es durchsucht

How does Go's ReplaceAllString function handle the replacement of

Verstehen der Ausgabe der Funktion „ReplaceAllString“ von Go

Die Funktion „ReplaceAllString“ in Go bietet eine Möglichkeit, alle Übereinstimmungen eines regulären Ausdrucks innerhalb einer Zeichenfolge zu ersetzen . Während die erste Ausgabe des bereitgestellten Beispielcodes einfach zu verstehen ist, können die folgenden Ausgaben rätselhaft erscheinen.

Ausgabe 2 und 4: $1-Rückverweise verstehen

In der zweiten und vierte Ausgabe: $1 bezieht sich auf die Erfassungsgruppe, die durch den ersten Klammersatz im regulären Ausdruck definiert wird: a(x)b. Diese Erfassungsgruppe gleicht die Zeichenfolge ab, die aus einer beliebigen Anzahl von „x“-Zeichen besteht, und erfasst sie.

  • In Ausgabe 2 (fmt.Println(re.ReplaceAllString("-ab-axxb-", "$1 "))), $1 wird durch die erfasste Zeichenfolge von 'x' Zeichen (--xx-) ersetzt.
  • In Ausgabe 4 (fmt.Println(re.ReplaceAllString("-ab-axxb-", „${1}W“))), $1 wird durch die gleiche erfasste Zeichenfolge ersetzt, jedoch in geschweifte Klammern (-W-xxW-) eingeschlossen.

Ausgabe 3: $1 verstehen W

Die dritte Ausgabe (fmt.Println(re.ReplaceAllString("-ab-axxb-", "$1W"))) ist die faszinierendste. In der Dokumentation zu „ReplaceAllString“ heißt es, dass „$-Zeichen“ im Ersetzungsmuster wie in der Expand-Funktion interpretiert werden:

Innerhalb von repl werden $-Zeichen wie in Expand

Expand gibt Folgendes an:

In der Vorlage wird eine Variable durch einen Teilstring der Form $name oder ${name} bezeichnet, wobei name eine nicht leere Folge von Buchstaben und Ziffern ist , und Unterstriche.

Ein Verweis auf einen außerhalb des gültigen Bereichs liegenden oder nicht übereinstimmenden Index oder einen Namen, der nicht im regulären Ausdruck vorhanden ist, wird durch ein leeres Segment ersetzt.
In der $name-Form wird der Name als angenommen so lang wie möglich: $1x entspricht ${1x}, nicht ${1}x, und $10 entspricht ${10}, nicht ${1}0.


In unserem Fall entspricht $1W ${1W}, da angenommen wird, dass es so lang wie möglich ist. Allerdings ist die Capture-Gruppe 1W nicht im regulären Ausdruck definiert. Dies bedeutet, dass er während des Abgleichvorgangs nicht gefüllt wurde und daher als Index „außerhalb des gültigen Bereichs“ oder „nicht übereinstimmend“ betrachtet wird. Daher wird $1W während der Ersetzungsphase durch eine

leere Zeichenfolge ("") ersetzt.

Das obige ist der detaillierte Inhalt vonWie geht die Funktion „ReplaceAllString' von Go mit der Ersetzung von „$1W' um, wenn die Erfassungsgruppe „1W' nicht im regulären Ausdruck definiert ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage