Maison > développement back-end > Golang > Comment trouver des correspondances qui se chevauchent dans Go Strings ?

Comment trouver des correspondances qui se chevauchent dans Go Strings ?

Barbara Streisand
Libérer: 2024-12-03 21:59:11
original
885 Les gens l'ont consulté

How to Find Overlapping Matches in Go Strings?

Recherche de correspondances qui se chevauchent dans Go

Vous souhaitez rechercher les indices du motif .#.#.. dans une chaîne donnée, mais Go ne prend pas en charge les correspondances qui se chevauchent dans sa fonction FindAllStringSubmatchIndex intégrée. Pour résoudre ce problème, la réponse suivante suggère une approche alternative utilisant strings.Index et une boucle au lieu de regex.

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)
}
Copier après la connexion

Cette approche fonctionne en trouvant de manière itérative l'index du modèle à l'aide de strings.Index et en l'ajoutant à la tranche d'index jusqu'à ce que le motif ne soit plus trouvé dans la chaîne d'entrée. C'est plus simple, plus efficace et évite les limitations des regex pour cette tâche spécifique.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal