在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中文網其他相關文章!