Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Mengecualikan Rentetan Tertentu Apabila Memadankan dalam Ungkapan Biasa Go?
Dalam Go, menggunakan enjin ekspresi biasa RE2, tidak ada cara langsung untuk menggunakan pernyataan pandang ke hadapan untuk memadankan semua aksara kecuali rentetan tertentu. Walau bagaimanapun, terdapat pendekatan alternatif untuk mencapai fungsi ini:
Perkhidmatan Web untuk Menjana Corak Nafi
Contohnya, jika corak dinafikan yang dijana ialah:
[^([^s]|s(s|o(s|m(s|es(omes)*(s|t(s|r(s|i(s|ns)))|o(s|ms)))))*([^os]|o([^ms]|m([^es]|e([^s]|s(omes)*([^ost]|t([^rs]|r([^is]|i([^ns]|n[^gs])))|o([^ms]|m([^es]|e[^s]))))))))*(s(s|o(s|m(s|es(omes)*(s|t(s|r(s|i(s|ns)))|o(s|ms)))))*(o((me?)?|mes(omes)*(t(r?|rin?)|o(me?)?)?))?)?$
regex terakhir anda akan kelihatan seperti:
/[^/]*/[^/]*/(([^s]|s(s|o(s|m(s|es(omes)*(s|t(s|r(s|i(s|ns)))|o(s|ms)))))*([^os]|o([^ms]|m([^es]|e([^s]|s(omes)*([^ost]|t([^rs]|r([^is]|i([^ns]|n[^gs])))|o([^ms]|m([^es]|e[^s]))))))))*(s(s|o(s|m(s|es(omes)*(s|t(s|r(s|i(s|ns)))|o(s|ms)))))*(o((me?)?|mes(omes)*(t(r?|rin?)|o(me?)?)?))?)?)$
Menangkap Semua Bahagian
Sebagai alternatif, anda boleh menangkap ketiga-tiga bahagian rentetan input (dipisahkan dengan garis miring ke hadapan) ke dalam kepingan. Kemudian, semak sama ada bahagian ketiga (val[1]) sama dengan rentetan yang anda mahu kecualikan ("somestring" dalam kes ini). Jika ia tidak sepadan, gunakan val[1] sebagai hasil yang dijangkakan:
package main import ( "fmt" "regexp" ) func main() { s := "anything/anything/somestring" r := regexp.MustCompile(`^[^/]+/[^/]+/(.*)`) val := r.FindStringSubmatch(s) // fmt.Println(val[1]) // -> somestring if len(val) > 1 && val[1] != "somestring" { // val has more than 1 element and is not equal to somestring? fmt.Println(val[1]) // Use val[1] } else { fmt.Println("No match") // Else, report no match } }
Atas ialah kandungan terperinci Bagaimana untuk Mengecualikan Rentetan Tertentu Apabila Memadankan dalam Ungkapan Biasa Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!