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

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

Barbara Streisand
发布: 2024-12-03 21:59:11
原创
885 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板