Maison >développement back-end >Golang >Comment puis-je trouver efficacement des modèles qui se chevauchent dans des chaînes Go sans expressions régulières ?

Comment puis-je trouver efficacement des modèles qui se chevauchent dans des chaînes Go sans expressions régulières ?

DDD
DDDoriginal
2024-12-03 22:53:10515parcourir

How Can I Efficiently Find Overlapping Patterns in Go Strings Without Regular Expressions?

Surmonter les modèles qui se chevauchent dans Golang

Malgré les limites des expressions régulières dans la gestion des correspondances qui se chevauchent, il existe des alternatives pour extraire les modèles qui se chevauchent dans Golang. Bien que les expressions complexes puissent être tentantes, elles conduisent souvent à des complexités et à des inefficacités inutiles.

Une approche efficace consiste à utiliser la nature intuitive des chaînes d'index et d'une boucle for. Par exemple, pour trouver les indices du modèle "..#..", vous pouvez parcourir la chaîne d'entrée à l'aide de strings.Index et accumuler les indices dans une liste.

input := "...#...#....#.....#..#..#..#......."
idx := []int{}
j := 0
for {
    i := strings.Index(input[j:], "..#..")
    if i == -1 {
        break
    }
    fmt.Println(j)
    idx = append(idx, j+i)
    j += i+1
}
fmt.Println("Indexes:", idx)

Cette approche simplifie le processus de correspondance, offre un meilleur contrôle sur les correspondances et améliore l'efficacité en évitant les opérations d'expression régulière inutiles. La nature simple de la boucle facilite la gestion de divers modèles et combinaisons de cordes.

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!

Déclaration:
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