Rumah > pembangunan bahagian belakang > tutorial php > Bagaimana Memadankan a^n b^n c^n Menggunakan Ungkapan Biasa (PCRE)?

Bagaimana Memadankan a^n b^n c^n Menggunakan Ungkapan Biasa (PCRE)?

Mary-Kate Olsen
Lepaskan: 2024-10-22 20:36:02
asal
794 orang telah melayarinya

How to Match a^n b^n c^n Using Regular Expressions (PCRE)?

Padankan a^n b^n c^n Menggunakan Ungkapan Biasa (PCRE)

Enjin ungkapan biasa telah maju melangkaui teori asal tatabahasa biasa , membolehkan mereka mengendalikan corak yang sebelum ini dianggap mustahil. Satu corak sedemikian ialah tatabahasa sensitif konteks {a^n b^n c^n; n>0}, yang sepadan dengan rentetan yang mengandungi bilangan a, b dan c yang sama.

Corak kompleks ini boleh dipadankan menggunakan ungkapan PCRE berikut:

~^
    (?=(a(?-1)?b)c)
     a+(b(?-1)?c)
$~x
Salin selepas log masuk

Penjelasan:

  • Tabuh ^ dan $ memastikan corak sepadan dengan keseluruhan rentetan.
  • Pernyataan berpandangan positif (?=(a(?-1)?b) c) menyemak sama ada, bagi setiap kejadian "ab," terdapat bilangan c yang sama.
  • Kumpulan a (b(?-1)?c) menangkap nombor arbitrari, diikuti dengan bilangan b dan c yang sama.

Wawasan Utama:

  • PCRE moden membolehkan corak bukan sekata dipadankan.
  • Corak ini menggambarkan kuasa penegasan pandang ke hadapan dan penafian rekursif.
  • Keupayaan regex untuk menghuraikan tatabahasa sensitif konteks mencabar tanggapan bahawa ia terhad kepada tatabahasa biasa.

Contoh Padanan:

  • aaabbbccc padanan (1)
  • aaabbbcc tidak sepadan (0)
  • aaaccc tidak sepadan (0)
  • aabcc tidak sepadan (0)
  • abbcc tidak sepadan (0)

regex ini menunjukkan bahawa keupayaan PCRE melangkaui bahasa biasa, membolehkannya memproses lebih banyak corak kompleks.

Atas ialah kandungan terperinci Bagaimana Memadankan a^n b^n c^n Menggunakan Ungkapan Biasa (PCRE)?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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