Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Mensimulasikan Pandangan Negatif di Belakang dalam Ungkapan Biasa Go?

Bagaimanakah Saya Boleh Mensimulasikan Pandangan Negatif di Belakang dalam Ungkapan Biasa Go?

Susan Sarandon
Susan Sarandonasal
2024-11-29 12:59:10841semak imbas

How Can I Simulate Negative Lookbehind in Go Regular Expressions?

Simulasi Pandang Belakang Negatif dalam Go

Dalam Go, pernyataan pandangan negatif di belakang tidak disokong atas sebab prestasi. Ini boleh menimbulkan cabaran apabila cuba memadankan corak menggunakan pengendali lihat di belakang.

Sebagai contoh, pandangan di belakang negatif mungkin digunakan untuk mengekstrak perintah daripada rentetan, tidak termasuk mana-mana aksara utama daripada set [@#/]. Menggunakan penegasan pandangan belakang negatif:

\b(?<![@#\/])\w.*

Walau bagaimanapun, regex ini tidak akan disusun dalam Go kerana kekurangan sokongan untuk pandangan belakang negatif.

Pendekatan Alternatif

Sebaliknya, kita boleh menggantikan pandangan negatif di belakang dengan set aksara yang dinafikan, yang sepadan dengan mana-mana watak tidak dalam set.

Reex dikemas kini:

\b[^@#/]\w.*

Jika aksara utama daripada set [@#/] dibenarkan pada permulaan rentetan, kita boleh gunakan ^ sauh:

(?:^|[^@#\/])\b\w.*

Penapis Fungsi

Sebagai alternatif, kita boleh menggunakan fungsi penapis dalam Pergi untuk menapis rentetan yang bermula dengan aksara daripada set [@#/].

func Filter(vs []string, f func(string) bool) []string {
    vsf := make([]string, 0)
    for _, v := range vs {
        if f(v) {
            vsf = append(vsf, v)
        }
    }
    return vsf
}

Proses Fungsi

Kami juga boleh mencipta fungsi proses yang menggunakan penapis fungsi:

func Process(inp string) string {
    t := strings.Split(inp, " ")
    t = Filter(t, func(x string) bool {
        return strings.Index(x, "#") != 0 &&
               strings.Index(x, "@") != 0 &&
               strings.Index(x, "/") != 0
    })
    return strings.Join(t, " ")
}

Fungsi proses ini boleh digunakan untuk mengubah rentetan input, mengalih keluar sebarang perkataan yang bermula dengan aksara daripada set [@#/].

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mensimulasikan Pandangan Negatif di Belakang dalam Ungkapan Biasa Go?. 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