Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Mencari Padanan Bertindih dalam Go Strings?

Bagaimana untuk Mencari Padanan Bertindih dalam Go Strings?

Barbara Streisand
Barbara Streisandasal
2024-12-03 21:59:11890semak imbas

How to Find Overlapping Matches in Go Strings?

Mencari Padanan Bertindih dalam Go

Anda ingin mencari indeks corak .#.#.. dalam rentetan tertentu, tetapi Go tidak menyokong padanan bertindih dalam fungsi FindAllStringSubmatchIndex terbina dalamnya. Untuk menangani perkara ini, jawapan berikut mencadangkan pendekatan alternatif menggunakan rentetan.Indeks dan gelung bukannya regex.

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)
}

Pendekatan ini berfungsi dengan mencari indeks corak secara berulang menggunakan rentetan.Indeks dan menambahkannya pada kepingan indeks sehingga corak tidak lagi ditemui dalam rentetan input. Ia lebih mudah, lebih cekap dan mengelakkan pengehadan regex untuk tugasan khusus ini.

Atas ialah kandungan terperinci Bagaimana untuk Mencari Padanan Bertindih dalam Go Strings?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn