Python
Halaman SebelumnyaHalaman Berikutnya
Ekspresi biasa adalah urutan karakter khusus yang membantu Anda mencocokkan atau menemukan string atau set string lain, menggunakan sintaks khusus yang disimpan dalam suatu pola. Ekspresi reguler banyak digunakan di dunia UNIX.
Modul Python re memberikan dukungan penuh untuk ekspresi reguler seperti Perl di Python. Modul re memunculkan pengecualian re.error jika terjadi kesalahan saat mengkompilasi atau menggunakan ekspresi reguler.
Kami akan membahas dua fungsi penting, yang akan digunakan untuk menangani ekspresi reguler. Tapi hal kecil dulu:Ada berbagai karakter, yang akan memiliki arti khusus ketika digunakan dalam ekspresi reguler. Untuk menghindari kebingungan saat menangani ekspresi reguler, kami akan menggunakan String Mentah sebagai r'expression' .
Fungsi ini mencoba mencocokkan pola RE ke string dengan bendera opsional .
Berikut adalah sintaks untuk fungsi ini
re.match(pattern, string, flags=0)
Berikut adalah deskripsi parameter
No.No. | Parameter &Deskripsi |
---|---|
1 | pola Ini adalah ekspresi reguler yang harus dicocokkan. |
2 | string Ini adalah string, yang akan dicari untuk mencocokkan pola di awal string. |
3 | bendera Anda dapat menentukan flag yang berbeda menggunakan bitwise OR (|). Ini adalah pengubah, yang tercantum dalam tabel di bawah ini. |
pertandingan ulang fungsi mengembalikan kecocokan menolak keberhasilan, Tidak ada pada kegagalan. Kami menggunakangrup(jumlah) atau grup() fungsi mencocokkan objek untuk mendapatkan ekspresi yang cocok.
No.No. | Mencocokkan Metode &Deskripsi Objek |
---|---|
1 | grup(angka=0) Metode ini mengembalikan seluruh kecocokan (atau nomor subgrup tertentu) |
2 | grup() Metode ini mengembalikan semua subgrup yang cocok dalam sebuah tuple (kosong jika tidak ada) |
#!/usr/bin/python import re line = "Cats are smarter than dogs" matchObj = re.match( r'(.*) are (.*?) .*', line, re.M|re.I) if matchObj: print "matchObj.group() : ", matchObj.group() print "matchObj.group(1) : ", matchObj.group(1) print "matchObj.group(2) : ", matchObj.group(2) else: print "No match!!"
Ketika kode di atas dijalankan, menghasilkan hasil sebagai berikut
matchObj.group() : Cats are smarter than dogs matchObj.group(1) : Cats matchObj.group(2) : smarter
Fungsi ini mencari kemunculan pertama RE pola dalam string dengan bendera opsional .
Berikut adalah sintaks untuk fungsi ini
re.search(pattern, string, flags=0)
Berikut adalah deskripsi parameter
No.No. | Parameter &Deskripsi |
---|---|
1 | pola Ini adalah ekspresi reguler yang harus dicocokkan. |
2 | string Ini adalah string, yang akan dicari untuk mencocokkan pola di mana saja dalam string. |
3 | bendera Anda dapat menentukan flag yang berbeda menggunakan bitwise OR (|). Ini adalah pengubah, yang tercantum dalam tabel di bawah ini. |
pencarian ulang fungsi mengembalikan kecocokan menolak keberhasilan, tidak ada pada kegagalan. Kami menggunakan grup(jumlah) atau grup() fungsi mencocokkan objek untuk mendapatkan ekspresi yang cocok.
No.No. | Mencocokkan Metode &Deskripsi Objek |
---|---|
1 | grup(angka=0) Metode ini mengembalikan seluruh kecocokan (atau nomor subgrup tertentu) |
2 | grup() Metode ini mengembalikan semua subgrup yang cocok dalam sebuah tuple (kosong jika tidak ada) |
#!/usr/bin/python import re line = "Cats are smarter than dogs"; searchObj = re.search( r'(.*) are (.*?) .*', line, re.M|re.I) if searchObj: print "searchObj.group() : ", searchObj.group() print "searchObj.group(1) : ", searchObj.group(1) print "searchObj.group(2) : ", searchObj.group(2) else: print "Nothing found!!"
Ketika kode di atas dijalankan, menghasilkan hasil sebagai berikut
searchObj.group() : Cats are smarter than dogs searchObj.group(1) : Cats searchObj.group(2) : smarter
Python menawarkan dua operasi primitif yang berbeda berdasarkan ekspresi reguler:cocok memeriksa kecocokan hanya di awal string, sementara menelusuri memeriksa kecocokan di mana saja dalam string (inilah yang dilakukan Perl secara default).
#!/usr/bin/python import re line = "Cats are smarter than dogs"; matchObj = re.match( r'dogs', line, re.M|re.I) if matchObj: print "match --> matchObj.group() : ", matchObj.group() else: print "No match!!" searchObj = re.search( r'dogs', line, re.M|re.I) if searchObj: print "search --> searchObj.group() : ", searchObj.group() else: print "Nothing found!!"
Ketika kode di atas dijalankan, menghasilkan hasil sebagai berikut
No match!! search --> searchObj.group() : dogs
Salah satu re . yang paling penting metode yang menggunakan ekspresi reguler adalah sub .
re.sub(pattern, repl, string, max=0)
Metode ini menggantikan semua kemunculan RE pola di string dengan balas , mengganti semua kemunculan kecuali maks asalkan. Metode ini mengembalikan string yang dimodifikasi.
#!/usr/bin/python import re phone = "2004-959-559 # This is Phone Number" # Delete Python-style comments num = re.sub(r'#.*$', "", phone) print "Phone Num : ", num # Remove anything other than digits num = re.sub(r'\D', "", phone) print "Phone Num : ", num
Ketika kode di atas dijalankan, menghasilkan hasil sebagai berikut
Phone Num : 2004-959-559 Phone Num : 2004959559
Literal ekspresi reguler dapat menyertakan pengubah opsional untuk mengontrol berbagai aspek pencocokan. Pengubah ditentukan sebagai bendera opsional. Anda dapat memberikan beberapa pengubah menggunakan OR eksklusif (|), seperti yang ditunjukkan sebelumnya dan dapat diwakili oleh salah satu dari ini
No.No. | Pengubah &Deskripsi |
---|---|
1 | re.I Melakukan pencocokan peka huruf besar/kecil. |
2 | re.L Menafsirkan kata-kata sesuai dengan lokal saat ini. Interpretasi ini mempengaruhi grup alfabet (\w dan \W), serta perilaku batas kata (\b dan \B). |
3 | re.M Membuat $ cocok dengan akhir baris (bukan hanya akhir string) dan membuat ^ cocok dengan awal baris mana pun (bukan hanya awal string). |
4 | re.S Membuat titik (titik) cocok dengan karakter apa pun, termasuk baris baru. |
5 | re.U Menafsirkan huruf sesuai dengan set karakter Unicode. Bendera ini memengaruhi perilaku \w, \W, \b, \B. |
6 | re.X Mengizinkan sintaks ekspresi reguler "manis". Itu mengabaikan spasi putih (kecuali di dalam set [] atau saat diloloskan dengan garis miring terbalik) dan memperlakukan # yang tidak lolos sebagai penanda komentar. |
Kecuali untuk karakter kontrol, (+ ? . * ^ $ ( ) [ ] { } | \) , semua karakter cocok dengan dirinya sendiri. Anda dapat menghindari karakter kontrol dengan mendahuluinya dengan garis miring terbalik.
Tabel berikut mencantumkan sintaks ekspresi reguler yang tersedia di Python
No.No. | Pola &Deskripsi |
---|---|
1 | ^ Cocok dengan awal baris. |
2 | $ Cocok dengan akhir baris. |
3 | . Cocok dengan karakter tunggal apa pun kecuali baris baru. Menggunakan opsi m memungkinkannya untuk mencocokkan baris baru juga. |
4 | [...] Mencocokkan karakter tunggal apa pun dalam tanda kurung. |
5 | [^...] Cocok dengan karakter tunggal apa pun yang tidak ada dalam tanda kurung |
6 | ulang* Cocok dengan 0 atau lebih kemunculan ekspresi sebelumnya. |
7 | kembali+ Mencocokkan 1 atau lebih kemunculan ekspresi sebelumnya. |
8 | kembali? Mencocokkan 0 atau 1 kemunculan ekspresi sebelumnya. |
9 | kembali{ n} Sama persis dengan n jumlah kemunculan ekspresi sebelumnya. |
10 | kembali{ n,} Cocok dengan n atau lebih kemunculan ekspresi sebelumnya. |
11 | kembali{ n, m} Mencocokkan setidaknya n dan paling banyak m kemunculan ekspresi sebelumnya. |
12 | a| b Cocok dengan a atau b. |
13 | (kembali) Mengelompokkan ekspresi reguler dan mengingat teks yang cocok. |
14 | (?imx) Mengaktifkan sementara opsi i, m, atau x dalam ekspresi reguler. Jika dalam tanda kurung, hanya area tersebut yang terpengaruh. |
15 | (?-imx) Menonaktifkan sementara opsi i, m, atau x dalam ekspresi reguler. Jika dalam tanda kurung, hanya area tersebut yang terpengaruh. |
16 | (?:re) Mengelompokkan ekspresi reguler tanpa mengingat teks yang cocok. |
17 | (?imx:re) Mengaktifkan sementara opsi i, m, atau x dalam tanda kurung. |
18 | (?-imx:re) Menonaktifkan sementara opsi i, m, atau x di dalam tanda kurung. |
19 | (?#...) Komentar. |
20 | (?=re) Menentukan posisi menggunakan pola. Tidak memiliki jangkauan. |
21 | (?! re) Menentukan posisi menggunakan negasi pola. Tidak memiliki jangkauan. |
22 | (?> ulang) Mencocokkan pola independen tanpa mundur. |
23 | \w Mencocokkan karakter kata. |
24 | \W Mencocokkan karakter bukan kata. |
25 | \s Cocok dengan spasi. Setara dengan [\t\n\r\f]. |
26 | \S Cocok dengan bukan spasi. |
27 | \d Mencocokkan angka. Setara dengan [0-9]. |
28 | \D Mencocokkan bukan angka. |
29 | \A Cocok dengan awal string. |
30 | \Z Cocok dengan akhir string. Jika ada baris baru, itu cocok sebelum baris baru. |
31 | \z Cocok dengan akhir string. |
32 | \G Mencocokkan titik di mana pertandingan terakhir selesai. |
33 | \b Mencocokkan batas kata saat berada di luar tanda kurung. Mencocokkan spasi mundur (0x08) saat berada di dalam tanda kurung. |
34 | \B Mencocokkan batas bukan kata. |
35 | \n, \t, dll. Cocok dengan baris baru, carriage return, tab, dll. |
36 | \1...\9 Cocok dengan subekspresi yang dikelompokkan ke-n. |
37 | \10 Cocok dengan subekspresi yang dikelompokkan ke-n jika sudah cocok. Jika tidak, mengacu pada representasi oktal dari kode karakter. |
No.No. | Contoh &Deskripsi |
---|---|
1 | python Cocokkan "python". |
No.No. | Contoh &Deskripsi |
---|---|
1 | [Pp]ython Cocokkan "Python" atau "python" |
2 | gosok[kamu] Cocokkan "ruby" atau "rube" |
3 | [aeiou] Cocokkan salah satu vokal huruf kecil |
4 | [0-9] Cocokkan angka apa pun; sama dengan [0123456789] |
5 | [a-z] Cocokkan huruf kecil ASCII apa pun |
6 | [A-Z] Cocokkan huruf besar ASCII apa pun |
7 | [a-zA-Z0-9] Cocokkan salah satu di atas |
8 | [^aeiou] Cocokkan apa pun selain vokal huruf kecil |
9 | [^0-9] Cocokkan apa pun selain angka |
No.No. | Contoh &Deskripsi |
---|---|
1 | . Cocokkan karakter apa pun kecuali baris baru |
2 | \d Mencocokkan angka:[0-9] |
3 | \D Cocokkan bukan angka:[^0-9] |
4 | \s Mencocokkan karakter spasi putih:[ \t\r\n\f] |
5 | \S Cocokkan bukan spasi putih:[^ \t\r\n\f] |
6 | \w Mencocokkan satu karakter kata:[A-Za-z0-9_] |
7 | \W Mencocokkan karakter bukan kata:[^A-Za-z0-9_] |
No.No. | Contoh &Deskripsi |
---|---|
1 | ruby? Cocokkan "gosok" atau "ruby":y adalah opsional |
2 | ruby* Cocokkan "gosok" plus 0 atau lebih ys |
3 | ruby+ Cocokkan "gosok" plus 1 atau lebih ys |
4 | \d{3} Cocokkan tepat 3 digit |
5 | \d{3,} Cocokkan 3 digit atau lebih |
6 | \d{3,5} Cocokkan 3, 4, atau 5 digit |
Ini cocok dengan jumlah pengulangan terkecil
No.Sr. | Contoh &Deskripsi |
---|---|
1 | <.*>
Pengulangan serakah:cocok dengan " |
2 | <.*?>
Nongreedy:cocok dengan " |
No.No. | Contoh &Deskripsi |
---|---|
1 | \D\d+ Tidak ada grup:+ berulang \d |
2 | (\D\d)+ Dikelompokkan:+ berulang \D\d pair |
3 | ([Pp]ython(, )?)+ Cocokkan "Python", "Python, python, python", dll. |
Ini cocok dengan grup yang sebelumnya cocok lagi
No.Sr. | Contoh &Deskripsi |
---|---|
1 | ([Pp])ython&\1ails Cocokkan python&pails atau Python&Pails |
2 | (['"])[^\1]*\1 String yang dikutip tunggal atau ganda. \1 cocok dengan apa pun yang cocok dengan grup pertama. \2 cocok dengan apa pun yang cocok dengan grup ke-2, dll. |
No.No. | Contoh &Deskripsi |
---|---|
1 | python|perl Cocokkan "python" atau "perl" |
2 | gosok(y|le)) Cocokkan "ruby" atau "rubel" |
3 | Python(!+|\?) "Python" diikuti oleh satu atau lebih ! atau satu? |
Ini perlu menentukan posisi kecocokan.
No.No. | Contoh &Deskripsi |
---|---|
1 | ^Python Cocokkan "Python" di awal string atau baris internal |
2 | Python$ Cocokkan "Python" di akhir string atau baris |
3 | \APython Cocokkan "Python" di awal string |
4 | Python\Z Cocokkan "Python" di akhir string |
5 | \bPython\b Cocokkan "Python" pada batas kata |
6 | \brub\B \B adalah batas bukan kata:cocokkan "gosok" di "rube" dan "ruby" tetapi tidak sendirian |
7 | Python(?=!) Cocokkan "Python", jika diikuti dengan tanda seru. |
8 | Python(?!!) Cocokkan "Python", jika tidak diikuti dengan tanda seru. |
No.No. | Contoh &Deskripsi |
---|---|
1 | R(?#komentar) Cocok dengan "R". Selebihnya adalah komentar |
2 | R(?i)uby Tidak peka huruf besar/kecil saat mencocokkan "uby" |
3 | R(?i:uby) Sama seperti di atas |
4 | gosok(?:y|le)) Grup saja tanpa membuat \1 backreference |
Python
Python strftime() Dalam artikel ini, Anda akan belajar mengonversi objek tanggal, waktu, dan waktu ke string yang setara (dengan bantuan contoh) Video:Tanggal dan Waktu dengan Python strftime() metode mengembalikan string yang mewakili tanggal dan waktu menggunakan objek tanggal, waktu atau datet
Python strptime() Dalam artikel ini, Anda akan belajar membuat objek datetime dari string (dengan bantuan contoh). Video:Tanggal dan Waktu dengan Python strptime() metode membuat objek datetime dari string yang diberikan. Catatan: Anda tidak dapat membuat datetime objek dari setiap string. Strin
Apa itu Ekspresi Reguler di Python? Ekspresi Reguler (RE) dalam bahasa pemrograman adalah string teks khusus yang digunakan untuk menggambarkan pola pencarian. Ini sangat berguna untuk mengekstrak informasi dari teks seperti kode, file, log, spreadsheet, atau bahkan dokumen. Saat menggunakan ekspr
Jika Anda melewatkannya:Python 2 adalah secara resmi tidak didukung mulai 1 Januari 2020 . Jika Anda masih menggunakan Python 2.7, tingkatkan sekarang . Jika Anda tidak yakin versi apa yang Anda jalankan, periksa versi Python Anda. Banyak pengelola paket telah bermigrasi ke Python 3. Beberapa mas