Heim  >  Artikel  >  Backend-Entwicklung  >  Fortgeschrittenes Tutorial zu regulären Ausdrücken in der Go-Sprache: Verwendung von Rückverweisen

Fortgeschrittenes Tutorial zu regulären Ausdrücken in der Go-Sprache: Verwendung von Rückverweisen

WBOY
WBOYOriginal
2023-07-12 09:27:25942Durchsuche

Go Language Regular Expression Advanced Tutorial: So verwenden Sie Rückverweise

Einführung:
Regular Expression ist ein leistungsstarkes Tool zum Abgleichen von Zeichenfolgen und eine der notwendigen Fähigkeiten für Entwickler, die Text verarbeiten müssen. Das reguläre Paket der Go-Sprache bietet eine Fülle von Funktionen, einschließlich Rückverweisen. In diesem Artikel wird erläutert, wie Rückverweise für den erweiterten Vergleich regulärer Ausdrücke verwendet werden.

1. Das Konzept der Rückreferenz:
Rückreferenz bezieht sich auf die Verwendung einer bereits übereinstimmenden Zeichenfolge in einem regulären Ausdruck als Teil eines nachfolgenden Abgleichs. Durch die Verwendung von Rückverweisen können wir komplexe Muster präziser zuordnen, beispielsweise die Zuordnung wiederholter Wörter oder Tags.

2. Syntax für die Verwendung von Rückverweisen:
Verwenden Sie in den regulären Ausdrücken der Go-Sprache das $-Symbol gefolgt von einer Zahl, um einen Rückverweis darzustellen. Die sogenannte „Nummer“ bezieht sich auf die Seriennummer der erfassenden Gruppe im vorherigen regulären Ausdruck.

Beispiel 1:
Angenommen, wir haben eine Liste mit Zeichenfolgen und müssen darin nacheinander die gleichen Wörter finden.

package main

import (

"fmt"
"regexp"

)

func main() {

str := "hello hello world world world"

re := regexp.MustCompile(`(w+)s+`)
matches := re.FindAllStringSubmatch(str, -1)

for _, match := range matches {
    fmt.Println(match[0])
}

}

Ausgabeergebnis:
hello hallo
world world world

In diesem Beispiel haben wir reguläre Ausdrücke( w+ )s+ . Unter diesen steht ( w+ ) für ein Wort, s+ für ein oder mehrere Leerzeichen und für einen Rückverweis auf die vorherige einfangende Gruppe ist das passende Wort. (w+)s+。其中,(w+)表示一个单词,s+表示一个或多个空格,表示反向引用前面的捕获组,即匹配到的单词。

示例2:
假设我们有一个HTML字符串,需要匹配其中重复的标签。

package main

import (

"fmt"
"regexp"

)

func main() {

html := "<h1>标题</h1><h2>副标题</h2><h1>另一个标题</h1><h2>另一个副标题</h2>"

re := regexp.MustCompile(`<h(d)>(.*?)</h>`)
matches := re.FindAllStringSubmatch(html, -1)

for _, match := range matches {
    fmt.Println(match[0])
}

}

输出结果:
4a249f0d628e2318394fd9b75b4636b1标题473f0a7621bec819994bb5020d29372a
c1a436a314ed609750bd7c7d319db4da副标题2e9b454fa8428549ca2e64dfac4625cd
4a249f0d628e2318394fd9b75b4636b1另一个标题473f0a7621bec819994bb5020d29372a
c1a436a314ed609750bd7c7d319db4da另一个副标题2e9b454fa8428549ca2e64dfac4625cd

在这个例子中,我们使用了正则表达式4238498ac8cd3c608e196fe41a474f88(.*?)7f9de5593b389930cbdda4720ecb089f。其中,4238498ac8cd3c608e196fe41a474f88表示匹配4a249f0d628e2318394fd9b75b4636b1c1a436a314ed609750bd7c7d319db4da标签,(.*?)表示非贪婪模式匹配标签内容,7f9de5593b389930cbdda4720ecb089f表示匹配473f0a7621bec819994bb5020d29372a2e9b454fa8428549ca2e64dfac4625cd闭合标签,

Beispiel 2:

Angenommen, wir haben eine HTML-Zeichenfolge und müssen darin wiederholte Tags abgleichen.

package main🎜🎜import (🎜rrreee🎜)🎜🎜func main() {🎜rrreee🎜}🎜🎜Ausgabeergebnis: 🎜4a249f0d628e2318394fd9b75b4636b1Title473f0a7621bec819994bb5020d29372a🎜c1a436a314ed609750bd7c7d319db4daSubtitle5483268f6372bd7d5068d808e6e49a09Ein weiterer Titel473f0a7621bec819994bb5020d29372a🎜c1a436a314ed609750bd7c7d319db4daEin weiterer Untertitel2e9b454fa8428549ca2e64dfac4625cd🎜🎜In diesem Beispiel haben wir den regulären Ausdruck 4238498ac8cd3c608e196fe41a474f88 (.*?)f390e0e4de13ed81adb892182a8eefc1. Unter diesen bedeutet 4238498ac8cd3c608e196fe41a474f88 das passende 4a249f0d628e2318394fd9b75b4636b1- oder c1a436a314ed609750bd7c7d319db4da-Tag, (. * ?) bedeutet, dass der Tag-Inhalt im Non-Greedy-Modus übereinstimmt, 991220c0dd17f19e1035a145897fbd44 bedeutet, dass 473f0a7621bec819994bb5020d29372a oder </ übereinstimmt h2&gt ; schließt das Tag, gibt einen Rückverweis auf die vorherige Erfassungsgruppe an, also den übereinstimmenden Tag-Typ. 🎜🎜Fazit: 🎜Rückverweis ist eine leistungsstarke Funktion in regulären Ausdrücken der Go-Sprache, mit der eine präzisere Musterübereinstimmung erreicht werden kann. Für Szenarien wie die Verarbeitung komplexer Texte oder HTML-Strings können Rückverweise eine praktische Lösung darstellen. Bei der Verwendung von Rückverweisen müssen Sie jedoch auf die Reihenfolge der Erfassungsgruppen und die standardisierte Syntax regulärer Ausdrücke achten, um genaue Übereinstimmungsergebnisse zu erhalten. Ich hoffe, dass dieser Artikel den Lesern helfen kann, Rückverweise vollständig zu verstehen und anzuwenden und ihre Fähigkeiten im Umgang mit regulären Ausdrücken zu verbessern. 🎜

Das obige ist der detaillierte Inhalt vonFortgeschrittenes Tutorial zu regulären Ausdrücken in der Go-Sprache: Verwendung von Rückverweisen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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