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

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

Susan Sarandon
Susan Sarandonasal
2024-12-01 00:35:12321semak imbas

How Can I Simulate Negative Lookbehind Assertions in Go Regular Expressions?

Mensimulasikan Pandangan Negatif di Belakang dalam Go

Reeks asal anda, yang menampilkan pandangan negatif di belakang penegasan, bertujuan untuk mengeluarkan arahan tanpa sebarang @, #, atau / aksara. Walau bagaimanapun, Go tidak menyokong pandangan negatif di belakang, menimbulkan halangan dalam melaksanakan corak ini.

Menulis Semula Regex

Untuk mencapai fungsi yang sama tanpa pandangan negatif, kita boleh menggantikan aksara yang akan dikecualikan dalam set aksara:

[^@#/]\w.*

Jika arahan tidak dibenarkan bermula dengan aksara ini, kita boleh menggunakan ^ sauh untuk menguatkuasakan syarat ini:

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

Pendekatan Alternatif Menggunakan Fungsi Go

Sebagai alternatif, pertimbangkan untuk menggunakan fungsi Go untuk menapis dan proses rentetan input:

func Filter(vs []string, f func(string) bool) []string { ... }

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

Pendekatan ini memanfaatkan fungsi penapis untuk mengecualikan perkataan bermula dengan yang ditentukan aksara, kemudian mencantumkan perkataan yang tinggal kembali ke dalam rentetan baharu. Anda boleh menemui demonstrasi yang berfungsi di taman permainan Go di http://play.golang.org/p/ntJRNxJTxo.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mensimulasikan Pandangan Negatif di Sebalik Penegasan 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