Heim > Backend-Entwicklung > Golang > Wie finde ich überlappende Übereinstimmungen in Go-Strings?

Wie finde ich überlappende Übereinstimmungen in Go-Strings?

Barbara Streisand
Freigeben: 2024-12-03 21:59:11
Original
885 Leute haben es durchsucht

How to Find Overlapping Matches in Go Strings?

Überlappende Übereinstimmungen in Go finden

Sie möchten die Indizes des Musters .#.#.. in einer bestimmten Zeichenfolge finden, aber Go unterstützt keine überlappenden Übereinstimmungen in seiner integrierten FindAllStringSubmatchIndex-Funktion. Um dieses Problem zu beheben, schlägt die folgende Antwort einen alternativen Ansatz vor, bei dem strings.Index und eine Schleife anstelle von Regex verwendet werden.

import (
    "fmt"
    "strings"
)

func main() {
    input := "...#...#....#.....#..#..#..#......."
    idx := []int{}
    j := 0

    for {
        i := strings.Index(input[j:], "..#..")
        if i == -1 {
            break
        }

        idx = append(idx, j+i)
        j += i + 1
    }

    fmt.Println("Indexes:", idx)
}
Nach dem Login kopieren

Dieser Ansatz funktioniert, indem der Index des Musters mithilfe von strings.Index iterativ ermittelt und hinzugefügt wird das Segment der Indizes, bis das Muster nicht mehr in der Eingabezeichenfolge gefunden wird. Es ist einfacher, effizienter und vermeidet die Einschränkungen von Regex für diese spezielle Aufgabe.

Das obige ist der detaillierte Inhalt vonWie finde ich überlappende Übereinstimmungen in Go-Strings?. 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