在 Go 中查找重叠匹配
您想要在给定字符串中查找模式 .#.#.. 的索引,但是Go 的内置 FindAllStringSubmatchIndex 函数不支持重叠匹配。为了解决这个问题,以下答案建议使用 strings.Index 和循环而不是正则表达式的替代方法。
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) }
此方法的工作原理是使用 strings.Index 迭代查找模式的索引并将其添加到索引切片,直到在输入字符串中不再找到该模式。它更简单、更高效,并且避免了正则表达式对于此特定任务的限制。
以上是如何在 Go 字符串中查找重叠匹配?的详细内容。更多信息请关注PHP中文网其他相关文章!