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

WBOY
Freigeben: 2023-07-12 09:27:25
Original
943 Leute haben es durchsucht

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"
Nach dem Login kopieren
Nach dem Login kopieren

)

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])
}
Nach dem Login kopieren

}

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"
Nach dem Login kopieren
Nach dem Login kopieren

)

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])
}
Nach dem Login kopieren

}

输出结果:
<h1>标题</h1>
<h2>副标题</h2>
<h1>另一个标题</h1>
<h2>另一个副标题</h2>

在这个例子中,我们使用了正则表达式<h(d)>(.*?)</h>。其中,<h(d)>表示匹配<h1><h2>标签,(.*?)表示非贪婪模式匹配标签内容,</h>表示匹配</h1></h2>闭合标签,

Beispiel 2:

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

package main🎜🎜import (🎜rrreee🎜)🎜🎜func main() {🎜rrreee🎜}🎜🎜Ausgabeergebnis: 🎜<h1>Title</h1>🎜<h2>SubtitleEin weiterer Titel</h1>🎜<h2>Ein weiterer Untertitel</h2>🎜🎜In diesem Beispiel haben wir den regulären Ausdruck <h(d)> (.*?). Unter diesen bedeutet <h(d)> das passende <h1>- oder <h2>-Tag, (. * ?) bedeutet, dass der Tag-Inhalt im Non-Greedy-Modus übereinstimmt, </h > bedeutet, dass </h1> 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!

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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage