首页 >后端开发 >Golang >如何在 Go 字符串中查找重叠匹配?

如何在 Go 字符串中查找重叠匹配?

Barbara Streisand
Barbara Streisand原创
2024-12-03 21:59:11890浏览

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