Python: Memadankan Kurung Bersarang dengan Regex
Memastikan kurungan bersarang ialah tugas biasa apabila berurusan dengan ungkapan matematik. Walau bagaimanapun, menggunakan ungkapan biasa memberikan batasan apabila ia berkaitan dengan pengendalian binaan bersarang. Walaupun anda mungkin telah cuba menyelesaikannya dengan re.compile('(. )'), ia hanya menangkap kurungan paling luar.
Menggunakan PyParsing untuk Konstruk Bersarang
Daripada menggunakan ungkapan biasa, pendekatan yang lebih sesuai ialah menggunakan PyParsing, perpustakaan yang direka khusus untuk menghuraikan struktur teks yang kompleks. PyParsing menggunakan teknik penghuraian rekursif, membolehkannya mengendalikan binaan bersarang dengan berkesan.
Berikut ialah contoh menggunakan PyParsing:
<code class="python">import pyparsing thecontent = pyparsing.Word(pyparsing.alphanums) | '+' | '-' parens = pyparsing.nestedExpr( '(', ')', content=thecontent)</code>
Ini mentakrifkan dua elemen: kandungan, yang sepadan dengan aksara abjad angka, ' ' , dan '-' dan kurungan, yang mewakili ungkapan bersarang yang disertakan dengan kurungan.
Contoh Penggunaan
Untuk menggunakan ini, anda boleh mengikuti contoh ini:
<code class="python">parens.parseString("((a + b) + c)")</code>
Output Jangkaan:
<code class="text">( [ ( ['a', '+', 'b'], {} ), '+', 'c' ], {} )</code>
Mengekstrak Data dalam Format Senarai
Jika anda lebih suka mengekstrak senarai bersarang, anda boleh menggunakan yang berikut:
<code class="python">res = parens.parseString("((12 + 2) + 3)") res.asList()</code>
Output:
<code class="text">[[['12', '+', '2'], '+', '3']]</code>
Dengan menggunakan PyParsing, anda boleh memadankan dan mengekstrak kurungan bersarang dengan berkesan dalam struktur teks yang kompleks.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memadankan dan Mengekstrak Tanda Kurung Bersarang dalam Python Menggunakan PyParsing?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!