Kalimat biasa adalah urutan karakter khusus, dapat membantu Anda untuk dengan mudah memeriksa apakah string cocok dengan pola.
Python kembali modul meningkat sejak versi 1.5, pola ekspresi reguler yang menyediakan Perl-gaya.
re modul memungkinkan bahasa Python memiliki semua fitur dari ekspresi reguler.
mengkompilasi fungsi untuk menghasilkan objek ekspresi reguler dari string pola dan parameter bendera opsional. Objek ini memiliki seperangkat metode untuk pencocokan ekspresi reguler dan substitusi.
re modul juga menyediakan metode yang konsisten dengan fitur-fitur ini fungsi yang menggunakan pola string sebagai argumen pertama mereka.
Bagian ini memperkenalkan Python fungsi pemrosesan yang umum ekspresi reguler.
fungsi re.match
re.match mencoba untuk mencocokkan pola dari posisi awal dari string, jika tidak pencocokan posisi awal berhasil, pertandingan () mengembalikan none.
Fungsi sintaks:
re.match(pattern, string, flags=0)Fungsi parameter:
Metode pertandingan re.match sukses mengembalikan sebuah objek pertandingan, jika tidak ada.
Kita dapat menggunakan grup (num) atau kelompok () fungsi untuk mendapatkan benda-benda yang cocok sesuai ekspresi.
Pencocokan metode objekdeskripsiKelompok (num = 0)Seluruh pencocokan ekspresi string, kelompok () bisa memasukkan lebih dari satu nomor kelompok, dalam hal ini akan mengembalikan nilai yang sesuai dengan kelompok-kelompok tupel.kelompok ()Ia mengembalikan tuple dari semua kelompok string, dari 1 ke nomor yang terdapat dalam kelompok.Contoh 1:
#!/usr/bin/python # -*- coding: UTF-8 -*- import re print(re.match('www', 'www.w3big.com').span()) # 在起始位置匹配 print(re.match('com', 'www.w3big.com')) # 不在起始位置匹配Jalankan contoh di atas output:
(0, 3) NoneContoh 2:
#!/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!!"Hasil dari contoh di atas adalah sebagai berikut:
matchObj.group() : Cats are smarter than dogs matchObj.group(1) : Cats matchObj.group(2) : smartermetode re.search
re.search memindai seluruh string dan mengembalikan pertandingan pertama yang sukses.
Fungsi sintaks:
re.search(pattern, string, flags=0)Fungsi parameter:
Metode pertandingan re.search sukses mengembalikan sebuah objek pertandingan, jika tidak ada.
Kita dapat menggunakan grup (num) atau kelompok () fungsi untuk mendapatkan benda-benda yang cocok sesuai ekspresi.
Pencocokan metode objekdeskripsiKelompok (num = 0)Seluruh pencocokan ekspresi string, kelompok () bisa memasukkan lebih dari satu nomor kelompok, dalam hal ini akan mengembalikan nilai yang sesuai dengan kelompok-kelompok tupel.kelompok ()Ia mengembalikan tuple dari semua kelompok string, dari 1 ke nomor yang terdapat dalam kelompok.Contoh 1:
#!/usr/bin/python # -*- coding: UTF-8 -*- import re print(re.search('www', 'www.w3big.com').span()) # 在起始位置匹配 print(re.search('com', 'www.w3big.com').span()) # 不在起始位置匹配Jalankan contoh di atas output:
(0, 3) (11, 14)Contoh 2:
#!/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!!" Hasil dari contoh di atas adalah sebagai berikut:searchObj.group() : Cats are smarter than dogs searchObj.group(1) : Cats searchObj.group(2) : smarterPerbedaan re.match dan re.search
re.match cocok hanya awal dari string, jika awal string tidak memenuhi ekspresi reguler, pertandingan gagal, fungsi mengembalikan None, dan re.search cocok dengan seluruh string, sampai menemukan kecocokan.
contoh:
#!/usr/bin/python # -*- coding: UTF-8 -*- import re print(re.match('www', 'www.w3big.com').span()) # 在起始位置匹配 print(re.match('com', 'www.w3big.com')) # 不在起始位置匹配 0Contoh hasil di atas adalah sebagai berikut:#!/usr/bin/python # -*- coding: UTF-8 -*- import re print(re.match('www', 'www.w3big.com').span()) # 在起始位置匹配 print(re.match('com', 'www.w3big.com')) # 不在起始位置匹配 1Mencari dan mengganti
Python ulang modul memberikan re.sub untuk pertandingan string pengganti.
sintaks:
String kembali adalah string dengan pertandingan RE paling kiri tidak akan terulang untuk menggantikan. Jika pola ini tidak ditemukan, karakter akan dikembalikan tidak berubah.
count parameter opsional adalah jumlah maksimum kali pengganti pencocokan pola; count harus bilangan bulat non-negatif. Nilai default adalah 0 berarti mengganti semua kejadian.
contoh:
#!/usr/bin/python # -*- coding: UTF-8 -*- import re print(re.match('www', 'www.w3big.com').span()) # 在起始位置匹配 print(re.match('com', 'www.w3big.com')) # 不在起始位置匹配 3Hasil dari contoh di atas adalah sebagai berikut:#!/usr/bin/python # -*- coding: UTF-8 -*- import re print(re.match('www', 'www.w3big.com').span()) # 在起始位置匹配 print(re.match('com', 'www.w3big.com')) # 不在起始位置匹配 4Regex pengubah - bendera opsional
Kalimat biasa dapat berisi bendera pengubah opsional untuk mengontrol mode pertandingan. Pengubah ditetapkan sebagai bendera opsional. (|) Untuk menentukan beberapa bendera yang dapat bitwise OR melalui. Sebagai re.I | re.M diatur untuk saya dan M bendera:
pengubahdeskripsire.IJadi pencocokan yang tidak sensitif hurufre.LApakah identifikasi lokalisasi (sadar lokal) pencocokanre.MMulti-garis pencocokan, mempengaruhi ^ dan $re.SSo., Termasuk baris cocok dengan semua karakterre.UMenurut mengatasi Unicode karakter set karakter. Bendera ini mempengaruhi \ w, \ W, \ b, \ B.re.XBendera ini dengan memberikan format yang lebih fleksibel sehingga Anda akan menulis kalimat biasa lebih mudah untuk memahami.Pola ekspresi reguler
Pola string menggunakan sintaks khusus untuk menunjukkan ekspresi reguler:
Surat dan angka sendiri. Pola ekspresi reguler dari huruf dan angka sesuai dengan string yang sama.
Sebagian besar huruf dan angka akan memiliki arti yang berbeda ketika didahului oleh garis miring terbalik.
Tanda baca lolos hanya ketika pertandingan itu sendiri, atau mereka mewakili arti khusus.
Backslash itu sendiri perlu menggunakan backslash melarikan diri.
Sejak ekspresi reguler biasanya mengandung backslash, sehingga Anda akan lebih baik menggunakan string asli untuk mewakili mereka. elemen skema (seperti r '/ t', setara dengan '// t') cocok dengan karakter khusus yang sesuai.
Tabel berikut mencantumkan unsur-unsur tertentu sintaks pola ekspresi reguler. Jika pola penggunaan Anda sambil memberikan opsional bendera argumen, makna unsur-unsur tertentu dari pola akan berubah.