Rumah >pembangunan bahagian belakang >Tutorial Python >Ringkaskan dan susun mata pengetahuan ungkapan biasa Python
Artikel ini membawakan anda pengetahuan yang berkaitan tentang python, yang terutamanya memperkenalkan isu yang berkaitan dengan ungkapan biasa Ungkapan biasa (Ungkapan Biasa) ialah rentetan yang boleh mewakili Mari kita lihat sekeping maklumat biasa. Saya harap ia akan membantu semua orang.
Pembelajaran yang disyorkan: tutorial video python
Biasa An ungkapan (Ungkapan Biasa) ialah rentetan, yang boleh mewakili sekeping maklumat biasa . Python disertakan dengan modul ekspresi biasa, yang melaluinya anda boleh mencari, mengekstrak dan menggantikan sekeping maklumat biasa. Sukar untuk mencari seorang di antara sepuluh ribu orang, tetapi mudah untuk mencari seorang yang sangat "berciri" di antara sepuluh ribu orang. Katakan ada seorang yang berkulit hijau dan berketinggian tiga meter Walaupun orang ini dalam kalangan sepuluh ribu orang, orang lain boleh menemuinya dengan sepintas lalu. Proses "mencari" ini dipanggil "padanan" dalam ungkapan biasa. Dalam pembangunan program, jika anda mahu program komputer mencari kandungan yang diperlukan daripada sekeping teks yang besar, anda boleh menggunakan ungkapan biasa. Terdapat langkah berikut untuk menggunakan ungkapan biasa.
(1) Cari corak.
(2) Gunakan simbol biasa untuk menyatakan peraturan.
(3) Ekstrak maklumat.
A noktah boleh menggantikan mana-mana aksara kecuali pemisah baris, termasuk tetapi tidak terhad kepada huruf Inggeris, nombor, aksara Cina, tanda baca bahasa Inggeris dan tanda baca bahasa Cina.
Asterisk boleh mewakili subungkapan yang sebelumnya ( watak biasa , satu lagi atau beberapa simbol ungkapan biasa) 0 kali hingga tak terhingga.
Semua di atas boleh diterima: (tanda bintang mewakili ungkapan sebelumnya)
Titik mewakili mana-mana aksara bukan baris baharu dan asterisk mewakili padanan aksara sebelumnya sebanyak 0 kali atau beberapa kali. Jadi ".*" bermaksud memadankan rentetan dengan sebarang panjang beberapa kali.
Semua perkara di atas boleh diterima:
Ini bermakna "apa-apa nombor mana-mana aksara kecuali pemisah baris" muncul di antara "sebegitu" dan "ha".
Tanda soal mewakili 0 atau 1 kali daripada subungkapan sebelum itu. Ambil perhatian bahawa tanda soal di sini ialah tanda soal Bahasa Inggeris
seperti di atas:
Penggunaan selepas gabungan:
Semua di atas boleh digunakan:
Nota: Perbezaan antara ".* dan ".*"
. *? Ia bermaksud untuk memadankan rentetan terpendek yang boleh memenuhi keperluan.
Satu ringkasan ayat adalah seperti berikut.
① ".*": Mod tamak, dapatkan rentetan terpanjang yang memenuhi syarat.
②".*?": Mod tidak tamak, dapatkan rentetan terpendek yang memenuhi syarat.
"ekstrak" bahagian kandungan daripada rentetan
Terdapat rentetan berikut:
Sebagai. anda boleh lihat, kata laluan di sini mempunyai titik bertindih Inggeris di sebelah kiri dan aksara Cina "anda" di sebelah kanan. Apabila membina ungkapan biasa: .*? Apabila anda, hasilnya akan menjadi:
Walau bagaimanapun, tanda bertindih dan aksara Cina "anda" bukan sebahagian daripada kata laluan Jika anda hanya mahu "12345abcde", anda perlu menggunakan kurungan:
mendapat:
Dalam ungkapan biasa, banyak simbol mempunyai makna istimewa, seperti tanda soal, asterisk, pendakap, kurungan segi empat sama dan kurungan. Garis miring ke belakang perlu digunakan bersama-sama dengan aksara lain untuk menukar simbol khas kepada simbol biasa, dan simbol biasa kepada simbol khas.
“d” digunakan dalam ungkapan biasa untuk mewakili satu digit.
Nak extract dua nombor boleh guna dd kalau nak extract 3 nombor boleh guna ddd. Tetapi bagaimana jika anda tidak tahu berapa digit nombor ini? Anda perlu menggunakan tanda * untuk mewakili nombor sewenang-wenangnya.
Semua boleh diwakili oleh ungkapan biasa berikut:
Modul ungkapan biasa Python dinamakan "re", yang merupakan singkatan daripada "ungkapan biasa". Dalam Python, anda perlu mengimport modul ini terlebih dahulu sebelum menggunakannya. Pernyataan yang diimport ialah:
import re
Modul ungkapan biasa Python mengandungi kaedah findall, yang boleh mengembalikan semua dalam bentuk senarai Rentetan yang memenuhi keperluan.
Prototaip fungsi findall ialah:
re.findall(pattern,string,flags=0)
corak mewakili ungkapan biasa, rentetan mewakili rentetan asal dan bendera mewakili beberapa bendera fungsi khas. Hasil findall ialah senarai yang mengandungi semua hasil yang sepadan. Jika tiada keputusan dipadankan, senarai kosong akan dikembalikan.
Apabila anda perlu mengekstrak kandungan tertentu, gunakan kurungan untuk menyertakan kandungan tersebut supaya anda tidak mendapat maklumat yang tidak berkaitan. Bagaimana untuk kembali jika ia mengandungi berbilang "(.*? )"? Seperti yang ditunjukkan dalam Rajah 3-2, apa yang dikembalikan masih merupakan senarai, tetapi elemen dalam senarai menjadi tupel Elemen pertama dalam tupel ialah nombor akaun, dan elemen kedua ialah kata laluan.
Terdapat parameter bendera dalam prototaip fungsi. Parameter ini boleh diabaikan. Apabila tidak ditinggalkan, ia mempunyai beberapa fungsi tambahan, seperti mengabaikan huruf besar, mengabaikan baris baharu, dsb.
Di sini kami mengambil mengabaikan baris baharu sebagai contoh untuk menggambarkan Untuk mengabaikan baris baharu, anda perlu menggunakan bendera "re.S".
Walaupun simbol "n" muncul dalam hasil yang sepadan, ia adalah lebih baik daripada tidak mendapat apa-apa. Garis putus dalam kandungan boleh digantikan apabila membersihkan data kemudian.
Penggunaan search() adalah sama seperti findall(), tetapi search() hanya akan mengembalikan rentetan pertama yang memenuhi keperluan . Sebaik sahaja ia menemui sesuatu yang sepadan dengan keperluan, ia berhenti mencari. Ia amat berguna untuk mencari hanya data pertama dalam teks yang sangat besar, yang boleh meningkatkan kecekapan berjalan program dengan banyak.
Prototaip fungsi carian() ialah:
Untuk keputusan, jika perlawanan berjaya, ia adalah objek ungkapan biasa jika tiada data dipadankan, ia adalah Tiada.
Jika anda perlu mendapatkan hasil yang sepadan, anda perlu menggunakan kaedah .group() untuk mendapatkan nilai di dalam.
Hanya apabila parameter dalam .group() ialah 1, keputusan dalam kurungan dalam ungkapan biasa akan dicetak. Parameter
.group() tidak boleh melebihi bilangan kurungan dalam ungkapan biasa. Parameter 1 bermaksud membaca kandungan dalam kurungan pertama, parameter 2 bermaksud membaca kandungan dalam kurungan kedua, dan seterusnya.
(Perhatikan bahawa yang dalam gambar bukan findall)
re.findall() datang dengan fungsi re. compile(), jadi Tidak perlu menggunakan re.compile().
Mungkin terdapat aksara lain di dalam kurungan.
Lihat gambar di bawah untuk kesan tertentu.
Jika terdapat aksara biasa lain dalam kurungan, aksara biasa ini akan muncul dalam hasil yang diperolehi.
Pembelajaran yang disyorkan: tutorial video python
Atas ialah kandungan terperinci Ringkaskan dan susun mata pengetahuan ungkapan biasa Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!