ホームページ >バックエンド開発 >Golang >Go 文字列で重複する一致を見つける方法?

Go 文字列で重複する一致を見つける方法?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-03 21:59:11886ブラウズ

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。