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
Lepaskan: 2024-11-29 12:59:10
asal
839 orang telah melayarinya

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.*
Salin selepas log masuk

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.*
Salin selepas log masuk

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

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

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
}
Salin selepas log masuk

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, " ")
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan