Memadankan Tatabahasa Sensitif Konteks dengan PCRE: A^n B^n C^n (cth., "aaabbbccc")
Sementara biasa ungkapan secara tradisinya dikaitkan dengan menghuraikan tatabahasa biasa, pelaksanaan moden seperti PCRE menawarkan keupayaan lanjutan. Ini menimbulkan persoalan: bolehkah kita menggunakan PCRE untuk menghuraikan tatabahasa yang lebih kompleks dan peka konteks?
Secara khusus, mari kita terokai cabaran memadankan rentetan mengikut tatabahasa sensitif konteks {a^n b^n c^n; n > 0} (cth., "aaabbbccc").
Penyelesaian Regex:
Diinspirasikan oleh percubaan awal NullUserException, kami telah mencipta regex berikut:
~^ (?=(a(?-1)?b)c) a+(b(?-1)?c) $~x
Penjelasan:
Kes Ujian:
Kami menguji regex terhadap pelbagai input, termasuk:
Kesimpulan:
regeks ini menunjukkan kuasa luar biasa ungkapan biasa moden, melangkaui tatabahasa biasa untuk memadankan walaupun tatabahasa sensitif konteks seperti {a^n b^n c^n}. Keupayaan untuk menghuraikan corak yang lebih kompleks ini membuka kemungkinan baharu untuk aplikasi regex.
Atas ialah kandungan terperinci Bolehkah PCRE Memadankan Tatabahasa Sensitif Konteks Seperti {a^n b^n c^n;?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!