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) }
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!