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

Mary-Kate Olsen
Lepaskan: 2024-10-22 20:36:02
asal
664 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!

sumber: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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!