首頁 >後端開發 >Golang >如何在 Go 字串中尋找重疊匹配?

如何在 Go 字串中尋找重疊匹配?

Barbara Streisand
Barbara Streisand原創
2024-12-03 21:59:11948瀏覽

How to Find Overlapping Matches in Go Strings?

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn