Panduan Pemula untuk Ekspresi Biasa Dengan Python

Panduan Pemula untuk Ekspresi Biasa Dengan Python

Sekiranya anda seorang pengaturcara, kemungkinan anda sudah mengetahui apa ungkapan biasa (regex). Corak regex telah dilaksanakan di hampir setiap bahasa pengaturcaraan arus perdana, namun kekuatan dan fleksibiliti corak ini tidak dikenali oleh kebanyakan pembangun.





Panduan ini adalah mengenai ungkapan biasa dan bagaimana anda boleh menggunakannya dalam bahasa pengaturcaraan Python.





Apakah Ungkapan Biasa?

Ungkapan biasa adalah corak yang membantu pengguna memadankan kombinasi watak dalam fail teks dan rentetan. Anda boleh menggunakan ungkapan biasa untuk menyaring atau mencari corak tertentu dalam output perintah atau dokumen.





Terdapat pelbagai kes penggunaan ungkapan biasa, makhluk yang paling terkenal arahan grep di Linux . Aplikasi lain termasuk penyaringan maklumat seperti mengekstrak alamat e-mel dan nombor telefon dari lambakan data.

Sebab utama mengapa banyak pembangun menjauhkan diri dari ungkapan biasa adalah kurangnya kesedaran tentang kekuatan pencocokan corak. Bahkan ada yang menganggap ungkapan biasa membingungkan kerana banyaknya watak dan urutan yang digunakan dalam corak.



Apa pun alasannya, ungkapan biasa adalah dan akan menjadi salah satu aspek pengaturcaraan terpenting yang harus diketahui oleh semua orang.

tempat membeli anjing berhampiran saya

Ungkapan Biasa: Memadankan Karakter dan Urutan

Regex adalah bahasa yang sama sekali baru. Mesin regex menafsirkan corak yang terdiri daripada beberapa watak yang dilengkapi dengan makna tertentu. Literal asas seperti watak alfanumerik sesuai dengan diri mereka sendiri. Tetapi watak-watak yang kompleks seperti $, *, +, {, dll membantu dalam pemadanan pesanan tinggi.





  1. Tanda bintang (*): Memadankan watak sebelumnya sifar atau lebih banyak kali. Makna harfiah watak itu adalah 'Elemen berlipat kali ganda'. Contohnya, jika ungkapan biasa adalah abc * , rentetan yang dipadankan adalah ab, abc, abcc, abccc, abcccc, dll. Ungkapan [bc] * akan sepadan dengan bc, bcbc, bcbc, dll.
  2. Lagi (+): Memadankan watak sebelumnya satu atau beberapa kali. Kerja-kerja dari + watak serupa dengan * , tetapi + watak menghilangkan corak jika watak itu tidak berlaku. Sebagai contoh, abc + akan sepadan dengan abc, abcc, abccc, dll tetapi tidak ab.
  3. Tanda soal (?): Memadankan watak sebelumnya sifar atau satu kali. Contohnya, corak abc? akan sepadan dengan ab dan abc sahaja.
  4. Paip (|): Digunakan sebagai perduaan ATAU pengendali. Memadankan salah satu watak yang mendahului dan menggantikan petak. Sebagai contoh, a | b akan sama dengan a atau b.
  5. Titik (.): Memadankan watak yang identitinya tidak diketahui. Sebagai contoh, a.c akan sepadan dengan aac, abc, acc, a2c, dan sebagainya.
  6. Lobak (^): Memadankan watak pertama dalam corak. Sebagai contoh, ^ Ra akan memadankan perkataan bermula dengan Keluar seperti Arnab, Rakun, dan Rawak.
  7. Dolar ($): Memadankan watak terakhir dalam corak. Sebagai contoh, satu $ akan memadankan perkataan yang berakhir dengan sebuah seperti Van, Dan, dan Plan.
  8. Kata hubung (-): Digunakan untuk menentukan pelbagai watak. Sebagai contoh, [0-9] akan memadankan semua aksara angka satu digit.

Urutan khas yang digunakan dalam corak ekspresi biasa adalah:

  1. KE: Mengembalikan padanan jika watak yang berjaya hadir pada awal rentetan. Sebagai contoh, Dia akan memadankan perkataan bermula dengan The seperti The, Them, They, dll.
  2. b: Mengembalikan padanan jika watak dijumpai pada awal atau akhir perkataan. Sebagai contoh, bmad dan marah b akan memadankan perkataan seperti dibuat dan nomad masing-masing.
  3. B: Mengembalikan padanan jika watak tidak dijumpai pada awal atau akhir perkataan.
  4. d: Memadankan watak berangka yang terdapat dalam rentetan. Sebagai contoh, / d * akan memadankan nombor seperti 1, 12, 1232, dll.
  5. D: Memadankan watak bukan angka dalam rentetan. / D akan sepadan dengan a, b, c, f, dll.
  6. s: Memadankan watak ruang kosong dalam teks.
  7. S: Memadankan watak bukan ruang kosong dalam teks.
  8. dalam: Mengembalikan padanan jika rentetan mengandungi aksara alfanumerik termasuk garis bawah. Sebagai contoh, dalam akan sepadan dengan a, b, c, d, 1, 2, 3, dll.
  9. DALAM: Mengembalikan padanan jika rentetan tidak mengandungi aksara alfanumerik atau garis bawah.
  10. DENGAN: Memadankan watak di hujung rentetan. Sebagai contoh, akhir Z akan memadankan perkataan yang berakhir dengan akhir seperti membengkokkan, memperbaiki, cenderung dll.

Kaedah Python untuk Ungkapan Biasa

Di Python, the semula perpustakaan menyediakan semua fungsi dan utiliti yang diperlukan untuk melaksanakan regex dalam program anda. Anda tidak perlu memuat turun perpustakaan menggunakan pip kerana ia sudah dipasang sebelumnya dengan jurubahasa Python.





Untuk mengimport semula perpustakaan di Python, tambahkan kod berikut ke skrip anda:

import re

Perhatikan bahawa semasa menyampaikan ungkapan biasa di Python, kami menggunakan rentetan mentah kerana mereka tidak mentafsirkan watak khas seperti n dan t berbeza.

Padankan ()

The main semula () kaedah dalam Python mengembalikan objek regex jika program menemui padanan pada awal rentetan yang ditentukan. Fungsi ini mengambil dua hujah asas:

re.match(pattern, string)

... di mana corak adalah ungkapan biasa dan tali adalah teks yang perlu dicari.

Lihat coretan kod di bawah.

import re
match = re.match(r'Word', 'This sentence contains a Word')
print(match)

The r watak sebelum rentak bermaksud rentetan mentah.

Pengeluaran:

None

Kod yang disebutkan di atas kembali Tiada kerana Perkataan tidak hadir pada awal rentetan.

Sekiranya perlawanan dijumpai, anda boleh mencetak pertandingan menggunakan kumpulan() kaedah yang tergolong dalam objek regex.

import re
match = re.match(r'Word', 'Word is hard to read')
print(match.group(0))

Pengeluaran:

Word

The cari semula () kaedah mengambil argumen yang serupa dengan re.match (). Walaupun perlawanan () hanya mengembalikan pertandingan yang ada pada awal rentetan, cari () akan mengembalikan perlawanan yang terdapat di mana-mana indeks dalam rentetan.

import re
match = re.search(r'Word', 'This sentence contains a Word. Word is hard to read.')
print(match.group(0))

Perhatikan bahawa perlawanan () dan cari () kaedah hanya akan mengembalikan satu perlawanan corak. Dalam kod yang disebutkan di atas, Perkataan muncul dua kali. Tetapi cari () fungsi hanya akan sesuai dengan kejadian pertama perkataan.

Word

Cari Semua ()

Seperti yang anda sudah dapat meneka, cari () kaedah mengembalikan setiap kemungkinan perlawanan dalam rentetan.

import re
match = re.search(r'Word', 'This sentence contains a Word. Word is hard to read.')
for elem in match:
print(elem)

Daripada mengembalikan objek regex, fungsi findall () mengembalikan senarai semua padanan. Anda boleh mengulangi senarai menggunakan a untuk gelung di python .

Berpisah ()

Sekiranya anda ingin membahagikan rentetan menjadi sub-string menggunakan corak sebagai pembatas, maka berpecah () fungsi adalah yang anda perlukan.

import re
split = re.split(r'and', 'This word and that and this are different.')
print(split)

Pengeluaran:

['This word', 'that', 'this are different.']

Sub ()

The sub () kaedah membolehkan pengguna mengganti perkataan tertentu di tempat corak. Ia memerlukan hujah berikut.

re.sub(pattern, replacement, string)

Pertimbangkan coretan kod ini:

import re
result = re.sub(r'and', 'or', 'Dave and Harry must be punished.')
print(result)

Pengeluaran:

Dave or Harry must be punished.

Menyusun ()

The re.compile () kaedah dalam semula perpustakaan membolehkan pengguna menyimpan versi penyusunan corak ungkapan biasa dalam memori. Kemudian, dengan menggunakan objek yang disusun, pengguna dapat menyaring pembuangan teks yang ditentukan dengan cepat untuk corak yang sesuai.

import re
pattern = re.compile('Python')
match = pattern.findall('Python is a great language for writing scripts. Python is easy to learn.')
print(match)

Fungsi ini digunakan terutamanya untuk menyimpan corak yang memerlukan banyak sumber dan memerlukan banyak masa untuk dijalankan. Menyusun dan menyimpan corak sebagai objek terlebih dahulu menyelesaikan masalah ini.

Manfaatkan Kekuatan Regex Dengan Python

Semasa anda bekerja dengan fail teks dan output, regex adalah alat yang bagus untuk anda gunakan. Anda boleh menulis beberapa kod dengan cepat untuk menyaring atau mengganti corak tertentu dalam dokumen.

Menghafal semua watak dan urutan yang hampir sama sukar jika anda baru bermula dengan regex. Untuk menjadi lebih baik dalam ungkapan biasa, merujuk kepada senarai watak, kaedah, dan urutan sesekali pasti akan membantu anda dalam jangka masa panjang.

Berkongsi Berkongsi Tweet E-mel Lembaran Menipu Python RegEx untuk Pengaturcara Budding

Gunakan senarai ungkapan biasa Python ini agar anda lebih baik menggunakan bahasa pengaturcaraan serba boleh ini.

Baca Seterusnya
Topik-topik yang berkaitan
  • Pengaturcaraan
  • Pengaturcaraan
  • Python
Mengenai Pengarang Deepesh Sharma(79 Artikel Diterbitkan)

Deepesh adalah Editor Junior untuk Linux di MUO. Dia menulis panduan maklumat mengenai Linux, bertujuan untuk memberikan pengalaman yang membahagiakan kepada semua pendatang baru. Tidak pasti mengenai filem, tetapi jika anda mahu bercakap mengenai teknologi, dia adalah lelaki anda. Pada masa lapang, anda dapat melihatnya membaca buku, mendengar genre muzik yang berbeza, atau bermain gitarnya.

Lebih Banyak Dari Deepesh Sharma

Langgan buletin kami

Sertailah buletin kami untuk mendapatkan petua, ulasan, ebook percuma, dan tawaran eksklusif!

Klik di sini untuk melanggan