Dokumentasi kanggo modul Re kanggo Python 3 ing. Re modul kanggo ekspresi biasa

Ekspresi reguler minangka komponen sing populer ing meh kabeh basa pamrograman. Dheweke mbantu sampeyan ngakses informasi sing dibutuhake kanthi cepet. Utamane, digunakake nalika perlu kanggo ngolah teks. Python nerangake karo modul khusus minangka standar. re, sing tanggung jawab kanggo nggarap ekspresi biasa.

Dina iki kita bakal pirembagan rinci bab apa iku umume, carane bisa karo wong-wong mau lan carane modul re bakal mbantu.

Ekspresi biasa: pambuka

Apa gunane ekspresi reguler? Meh kabeh. Contone, iki:

  1. Aplikasi web sing mbutuhake validasi teks. Conto khas yaiku klien email online.
  2. Proyek liyane sing ana gandhengane karo teks, database lan liya-liyane.

Sadurunge miwiti parsing sintaks, kita kudu ngerti luwih rinci prinsip dhasar saka fungsi perpustakaan re lan ing umum, apa umume apik babagan. Kita uga bakal menehi conto saka praktik nyata, ing ngendi kita bakal nerangake mekanisme panggunaane. Sampeyan bisa nggawe cithakan kuwi, cocok kanggo sampeyan nindakake macem-macem saka sudhut operasi karo teks.

Apa cithakan ing perpustakaan Re?

Kanthi, sampeyan bisa nggoleki informasi saka macem-macem jinis, entuk informasi sing cocog karo dheweke, supaya fungsi liyane luwih adaptif. Lan, mesthi, kanggo ngolah data iki.

Contone, njupuk cithakan ing ngisor iki: s+. Iku tegese sembarang karakter spasi. Yen sampeyan nambahake tandha plus, iki tegese pola kasebut kalebu luwih saka siji spasi. Malah bisa cocog karakter tab sing disebut karo t+.

Sadurunge nggunakake, sampeyan kudu ngimpor perpustakaan Re. Sawisé iku, kita nggunakake printah khusus kanggo ngumpulake cithakan. Iki ditindakake kanthi rong langkah.

>>> ngimpor maneh

>>> regex = re.compile('s+')

Khusus, kode iki nindakake operasi kompilasi cithakan sing bisa digunakake. contone, kanggo nggoleki spasi (siji utawa luwih).

Entuk informasi sing kapisah saka senar sing beda nggunakake ekspresi reguler

Upaminipun kita duwe variabel ngemot informasi ing ngisor iki.

>>> text = “””100 INF Informatika

213 MAT Matematika  

156 ENG Inggris»»»

Isine telung kursus latihan. Saben wong kasusun saka telung bagean - nomer, kode lan jeneng. Kita weruh manawa interval antarane tembung kasebut beda. Apa sing kudu ditindakake supaya bisa ngilangi baris iki dadi nomer lan tembung sing kapisah? Ana rong cara kanggo nggayuh tujuan iki:

  1. nelpon fungsi re.dibagi.
  2. aplikasi fungsi pamisah kanggo regex.

Iki minangka conto nggunakake sintaks saben metode kanggo variabel kita.

>>> re.split('s+', text)  

# utawa

>>> regex.split(teks)

Output: ['100', 'INF', 'Ilmu Komputer', '213', 'MAT', 'Math', '156', 'ENG', 'English']

Umumé, loro cara bisa digunakake. Nanging luwih gampang nggunakake ekspresi reguler tinimbang nggunakake fungsi kasebut kaping pirang-pirang. re.dibagi.

Nemokake cocog karo telung fungsi

Kita kudu ngekstrak mung angka saka senar. Apa sing kudu ditindakake kanggo iki?

re.findall()

Punika kasus panggunaan kanggo fungsi kasebut golek (), sing, bebarengan karo ekspresi biasa, ngidini sampeyan ngekstrak kedadeyan siji utawa luwih nomer saka variabel teks.

>>> print (teks)  

100 Informatika Kab

213 MAT Matematika  

156 ING Inggris

>>> regex_num = re.compile('d+')  

>>> regex_num.findall(teks)  

['100', '213', '156']

Bebarengan karo simbol d, kita nggunakake cithakan sing nuduhake nilai numerik sing ana ing variabel utawa teks. Lan wiwit kita nambah siji + ana, iki tegese paling siji nomer kudu saiki. 

Sampeyan uga bisa nggunakake tandha * kanggo nemtokake manawa ana digit ora dibutuhake kanggo nemokake pertandhingan.

Nanging ing kasus kita, wiwit kita digunakake +, kita dijupuk karo golek () 1 utawa luwih sebutan digital kursus saka teks. Mangkono, ing kasus kita, ekspresi reguler tumindak minangka setelan kanggo fungsi kasebut.

re.search() vs re.match()

Minangka sampeyan bisa ngira saka jeneng fungsi, sing pisanan nggoleki sing cocog ing teks kasebut. Pitakonan: Apa bedane ketemu? Intine yaiku ngasilake obyek tartamtu sing cocog karo pola kasebut, lan ora kabeh urutan asil sing ditemokake ing wangun dhaptar, kaya fungsi sadurunge.

Ing siji, fungsi re.match mengkono padha. Mung sintaks sing beda. Cithakan kudu diselehake ing wiwitan. 

Ayo njupuk conto sing nduduhake iki.

>>> # nggawe variabel nganggo teks

>>> text2 = «»»INF Informatika

213 MAT Matematika 156″»»  

>>> # kompilasi regex lan goleki pola

>>> regex_num = re.compile('d+')  

>>> s = regex_num.search(teks2)  

>>> print('Indeks pisanan: ', s.start())  

>>> print('Indeks pungkasan: ', s.end())  

>>> print(text2[s.start():s.end()]) 

Indeks pisanan: 17 

Indeks pungkasan: 20

213

Yen sampeyan pengin entuk asil sing padha kanthi cara sing beda, sampeyan bisa nggunakake fungsi kasebut klompok().

Ngganti bagean teks karo perpustakaan Re

Kanggo ngganti teks, gunakake fungsi kasebut re.sub(). Upaminipun dhaftar kursus kita wis diganti sethitik. Kita weruh yen sawise saben nilai digital kita duwe tab. Tugas kita yaiku nggabungake kabeh urutan iki dadi siji baris. Kanggo nindakake iki, kita kudu ngganti ekspresi s+ nglewati 

Teks asline yaiku:

# nggawe variabel nganggo teks

>>> text = “””100 INF t Informatika

213 MAT t Matematika  

156 ENG t Inggris»»»  

>>> print (teks)  

100 INFORMASI Ilmu komputer

213 MAT Mathematics  

156 ING Inggris

Kanggo nindakake operasi sing dikarepake, kita nggunakake baris kode ing ngisor iki.

# ngganti siji utawa luwih spasi nganggo 1

>>> regex = re.compile('s+')  

>>> print(regex.sub(' ', teks))  

Akibaté, kita duwe siji baris. 

101 COM Komputer 205 MAT Matematika 189 ENG Inggris

Saiki nimbang masalah liyane. Kita ora ngadhepi tugas nggawe spasi. Luwih penting kanggo kita yen kabeh jeneng kursus diwiwiti ing baris anyar. Kanggo nindakake iki, ekspresi liyane digunakake sing nambahake baris anyar kanggo pangecualian. Ekspresi apa iki?

Pustaka Re ndhukung fitur kayata cocog negatif. Beda karo langsung amarga ngemot tanda seru sadurunge garis miring. Tegese, yen kita kudu ngliwati karakter baris anyar, mula kudu ditulis !n tinimbang n.

Kita entuk kode ing ngisor iki.

# mbusak kabeh spasi kajaba baris anyar  

>>> regex = re.compile('((?!n)s+)')  

>>> print(regex.sub(' ', teks))  

100 Informatika Kab

213 MAT Matematika  

156 ING Inggris

Apa klompok ekspresi reguler?

Kanthi bantuan klompok ekspresi reguler, kita bisa entuk obyek sing dikarepake ing wangun unsur sing kapisah, lan ora ing siji baris. 

Upaminipun kita kudu njaluk nomer mesthi, kode lan jeneng ora ing siji baris, nanging minangka unsur kapisah. Kanggo ngrampungake tugas, sampeyan kudu nulis akeh baris kode sing ora perlu. 

Nyatane, tugas bisa disederhanakake. Sampeyan bisa ngumpulake cithakan kanggo kabeh entri lan mung nemtokake data sing perlu kanggo njaluk saka kurung.

Bakal ana sawetara baris sing cilik banget. 

# nggawe klompok template teks mesthi lan ekstrak

>>> pola_kursus = '([0-9]+)s*([A-ZY]{3})s*([a-zA-ZoY]{4,})'  

>>> re.findall(kursus_pola, teks)  

[('100', 'INF', 'Ilmu Komputer'), ('213', 'MAT', 'Math'), ('156', 'ENG', 'Inggris')]

Konsep "rakus" cocog

Miturut standar, ekspresi reguler diprogram kanggo ngekstrak jumlah maksimal data sing cocog. Lan sanajan sampeyan butuh luwih sithik.

Ayo goleki conto kode HTML sing kudu diwenehi tag.

>>> text = "Contoh Pencocokan Ekspresi Reguler Rakus"  

>>> re.findall('', teks)  

['Conto Pencocokan Ekspresi Reguler Rakus']

Tinimbang ngekstrak mung siji tag, Python entuk kabeh senar. Mulane diarani rakus.

Lan apa sing kudu ditindakake kanggo entuk tag mung? Ing kasus iki, sampeyan kudu nggunakake lazy matching. Kanggo nemtokake ekspresi kasebut, tandha pitakon ditambahake ing pungkasan pola.

Sampeyan bakal entuk kode ing ngisor iki lan output interpreter.

>>> re.findall('', teks)  

[", ”]

Yen perlu kanggo njaluk mung kedadeyan pisanan ditemoni, banjur cara digunakake nggoleki ().

re.search('', teks).group()  

"

Banjur mung tag pambuka sing bakal ditemokake.

Cithakan Ekspresi Populer

Iki minangka tabel sing ngemot pola ekspresi reguler sing paling umum digunakake.

Dokumentasi kanggo modul Re kanggo Python 3 ing. Re modul kanggo ekspresi biasa

kesimpulan

Kita mung nimbang cara paling dhasar kanggo nggarap ekspresi reguler. Ing kasus apa wae, sampeyan wis weruh kepiye pentinge. Lan ing kene ora ana bedane apa kudu ngurai kabeh teks utawa fragmen individu, apa perlu nganalisa kiriman ing jaringan sosial utawa ngumpulake data supaya bisa diproses mengko. Ekspresi reguler minangka pembantu sing bisa dipercaya ing perkara iki.

Dheweke ngidini sampeyan nindakake tugas kayata:

  1. Nemtokake format data, kayata alamat email utawa nomer telpon.
  2. Njupuk senar lan pamisah dadi sawetara senar cilik.
  3. Nindakake macem-macem operasi nganggo teks, kayata nggoleki, ngekstrak informasi sing dibutuhake, utawa ngganti bagean saka karakter.

Ekspresi reguler uga ngidini sampeyan nindakake operasi sing ora pati penting. Sepisanan, nguwasani ilmu iki ora gampang. Nanging ing laku, kabeh wis standar, supaya iku cukup kanggo tokoh metu sapisan, sawise kang alat iki bisa digunakake ora mung ing Python, nanging uga ing basa program liyane. Malah Excel nggunakake ekspresi reguler kanggo ngotomatisasi pangolahan data. Dadi dosa yen ora nggunakake alat iki.

Ninggalake a Reply