Python RegEx: re.match(), re.search(), re.findall() dengan Contoh
Apa yang dimaksud dengan Ekspresi Reguler Python?
A Ekspresi Reguler (RE) dalam bahasa pemrograman adalah string teks khusus yang digunakan untuk mendeskripsikan pola pencarian. Ini sangat berguna untuk mengekstrak informasi dari teks seperti kode, file, log, spreadsheet, atau bahkan dokumen.
Saat menggunakan Python ekspresi reguler hal pertama yang harus dikenali adalah bahwa segala sesuatu pada dasarnya adalah karakter, dan kami menulis pola untuk mencocokkan urutan karakter tertentu yang juga disebut string. Ascii atau huruf latin adalah yang ada di keyboard Anda dan Unicode digunakan untuk mencocokkan teks asing. Ini mencakup angka dan tanda baca serta semua karakter khusus seperti $#@!%, dll.
Misalnya, a Python ekspresi reguler dapat memberitahu program untuk mencari teks tertentu dari string dan kemudian mencetak hasilnya. Ekspresi dapat mencakup
- Pencocokan teks
- Pengulangan
- Bercabang
- Komposisi pola, dll.
Ekspresi reguler atau RegEx di Python dilambangkan sebagai RE (RE, regex, atau pola regex) yang diimpor modul ulang. Python mendukung ekspresi reguler melalui perpustakaan. RegEx masuk Python mendukung berbagai hal seperti Pengubah, Pengidentifikasi, dan karakter spasi.
| Pengidentifikasi | Pengubah | Karakter spasi putih | Diperlukan pelarian |
|---|---|---|---|
| \d= bilangan apa pun (satu digit) | \d mewakili sebuah digit. Contoh: \d{1,5} itu akan mendeklarasikan digit antara 1,5 seperti 424,444,545 dll. | \n = baris baru | . + * ? [] $^() {} | \ |
| \D= apa pun kecuali angka (bukan digit) | + = cocok dengan 1 atau lebih | \s= spasi | |
| \s = spasi (tab, spasi, baris baru, dll.) |
? = cocok dengan 0 atau 1 | \t =tab | |
| \S= apa pun kecuali spasi | * = 0 atau lebih | \e = melarikan diri | |
| \w = huruf ( Cocokkan karakter alfanumerik, termasuk โ_โ) | $ cocok dengan akhir string | \r = kereta kembali | |
| \W =apa pun kecuali huruf ( Cocok dengan karakter non-alfanumerik kecuali โ_โ) | ^ cocok dengan awal sebuah string | \f= umpan formulir | |
| . = apa pun kecuali huruf (titik) | | cocok dengan salah satu atau x/y | ------ | |
| \b = karakter apa pun kecuali baris baru | [] = rentang atau โvariansโ | ------ | |
| \. | {x} = jumlah kode sebelumnya | ------ |
Sintaks Ekspresi Reguler (RE).
import re
- Modul "re" disertakan dengan Python terutama digunakan untuk pencarian dan manipulasi string
- Juga sering digunakan untuk halaman web โMenggoresโ (mengekstrak data dalam jumlah besar dari situs web)
Kita akan memulai tutorial ekspresi dengan latihan sederhana ini dengan menggunakan ekspresi (w+) dan (^).
Contoh Ekspresi w+ dan ^
- โ^โ: Ekspresi ini cocok dengan awal sebuah string
- โw+โ: Ekspresi ini cocok dengan karakter alfanumerik dalam string
Di sini kita akan melihat a Python RegEx Contoh bagaimana kita dapat menggunakan ekspresi w+ dan ^ dalam kode kita. Kami membahas fungsi re.findall() di Python, nanti dalam tutorial ini, tetapi untuk sementara, kita hanya fokus pada ekspresi \w+ dan \^.
Misalnya, untuk string kita โguru99, pendidikan itu menyenangkanโ jika kita mengeksekusi kode dengan w+ dan^, maka akan menghasilkan output โguru99โ.
import re xx = "guru99,education is fun" r1 = re.findall(r"^\w+",xx) print(r1)
Ingat, jika Anda menghilangkan tanda + dari w+, outputnya akan berubah, dan hanya akan memberikan karakter pertama dari huruf pertama, yaitu [g]
Contoh ekspresi \s dalam fungsi re.split
- โsโ: Ekspresi ini digunakan untuk membuat spasi pada string
Untuk memahami bagaimana RegEx ini masuk Python berhasil, kita mulai dengan yang sederhana Python RegEx Contoh fungsi split. Dalam contoh, kami telah memisahkan setiap kata menggunakan fungsi โre.splitโ dan pada saat yang sama kami telah menggunakan ekspresi \s yang memungkinkan untuk mengurai setiap kata dalam string secara terpisah.
Saat Anda menjalankan kode ini, ia akan memberi Anda keluaran ['kami', 'adalah', 'pemisahan', 'yang', 'kata-kata'].
Sekarang, mari lihat apa yang terjadi jika Anda menghapus โ\โ dari s. Tidak ada alfabet 's' dalam output, ini karena kami telah menghapus '\' dari string, dan mengevaluasi โsโ sebagai karakter biasa dan dengan demikian membagi kata-kata di mana pun ia menemukan โsโ dalam string.
Begitu pula dengan rangkaian lainnya Python ekspresi reguler yang dapat Anda gunakan dengan berbagai cara Python seperti \d,\D,$,\.,\b, dll.
Berikut kode lengkapnya
import re xx = "guru99,education is fun" r1 = re.findall(r"^\w+", xx) print((re.split(r'\s','we are splitting the words'))) print((re.split(r's','split the words')))
Selanjutnya, kita akan melihat jenis metode yang digunakan dengan ekspresi reguler Python.
Menggunakan metode ekspresi reguler
Paket โreโ menyediakan beberapa metode untuk benar-benar melakukan query pada string input. Kita akan melihat metode re in Python:
- pertandingan ulang()
- riset()
- re.findall()
Note: Berdasarkan ekspresi reguler, Python menawarkan dua operasi primitif yang berbeda. Metode match memeriksa kecocokan hanya di awal string sementara search memeriksa kecocokan di mana saja dalam string.
pertandingan ulang()
pertandingan ulang() fungsi masuk kembali Python akan mencari pola ekspresi reguler dan mengembalikan kemunculan pertama. Itu Python Metode RegEx Match memeriksa kecocokan hanya di awal string. Jadi, jika kecocokan ditemukan di baris pertama, ia akan mengembalikan objek kecocokan. Namun jika ditemukan kecocokan pada baris lain, maka Python Fungsi RegEx Match mengembalikan nol.
Misalnya, perhatikan kode berikut Python fungsi re.match(). Ekspresi โw+โ dan โ\Wโ akan cocok dengan kata-kata yang dimulai dengan huruf 'g' dan setelah itu, apa pun yang tidak dimulai dengan 'g' tidak akan teridentifikasi. Untuk memeriksa kecocokan setiap elemen dalam daftar atau string, kami menjalankan forloop di sini Python re.match() Contoh.
re.search(): Menemukan Pola dalam Teks
riset() fungsi akan mencari pola ekspresi reguler dan mengembalikan kemunculan pertama. Berbeda dengan Python re.match(), itu akan memeriksa semua baris string input. Itu Python fungsi re.search() mengembalikan objek yang cocok ketika pola ditemukan dan โnullโ jika pola tidak ditemukan
Bagaimana cara menggunakan pencarian()?
Untuk menggunakan fungsi pencarian(), Anda perlu mengimpor Python re module terlebih dahulu lalu jalankan kodenya. Itu Python fungsi re.search() mengambil "pola" dan "teks" untuk dipindai dari string utama kita
Misalnya di sini kita mencari dua string literal โPengujian perangkat lunakโ โguru99โ, dalam string teks โSoftware pengujian itu menyenangkanโ. Untuk "pengujian perangkat lunak" kami menemukan kecocokan sehingga mengembalikan output Python re.search() Contoh sebagai โmenemukan kecocokanโ, sedangkan untuk kata โguru99โ kami tidak dapat menemukan string sehingga menghasilkan output sebagai โTidak cocokโ.
re.findall()
Temukan semua() modul digunakan untuk mencari โsemuaโ kejadian yang cocok dengan pola tertentu. Sebaliknya, modul search() hanya akan mengembalikan kemunculan pertama yang cocok dengan pola yang ditentukan. findall() akan mengulangi semua baris file dan akan mengembalikan semua kecocokan pola yang tidak tumpang tindih dalam satu langkah.
Cara Menggunakan re.findall() di Python?
Di sini kita memiliki daftar alamat email, dan kita ingin semua alamat email diambil dari daftar, kita menggunakan metode re.findall() di Python. Ini akan menemukan semua alamat e-mail dari daftar.
Berikut kode lengkap Contoh re.findall()
import re
list = ["guru99 get", "guru99 give", "guru Selenium"]
for element in list:
z = re.match("(g\w+)\W(g\w+)", element)
if z:
print((z.groups()))
patterns = ['software testing', 'guru99']
text = 'software testing is fun?'
for pattern in patterns:
print('Looking for "%s" in "%s" ->' % (pattern, text), end=' ')
if re.search(pattern, text):
print('found a match!')
else:
print('no match')
abc = 'guru99@google.com, careerguru99@hotmail.com, users@yahoomail.com'
emails = re.findall(r'[\w\.-]+@[\w\.-]+', abc)
for email in emails:
print(email)
Python Flags
Banyak Python Metode Regex dan fungsi Regex mengambil argumen opsional yang disebut Bendera. Bendera ini dapat mengubah makna yang diberikan Python Pola ekspresi reguler. Untuk memahaminya kita akan melihat satu atau dua contoh Bendera ini.
Berbagai bendera digunakan di Python termasuk
| Sintaks untuk Bendera Regex | Apa fungsi bendera ini |
|---|---|
| [re.M] | Buatlah awal/akhir mempertimbangkan setiap baris |
| [re.I] | Itu mengabaikan kasus |
| [re.S] | Membuat [ . ] |
| [re.U] | Jadikan { \w,\W,\b,\B} mengikuti aturan Unicode |
| [re.L] | Jadikan {\w,\W,\b,\B} mengikuti lokal |
| [re.X] | Izinkan komentar di Regex |
Contoh Flag re.M atau Multiline
Dalam multiline, pola karakter [^] cocok dengan karakter pertama dari string dan awal setiap baris (yang mengikuti tepat setelah setiap baris baru). Sementara ekspresi โwโ kecil digunakan untuk menandai spasi dengan karakter. Ketika Anda menjalankan kode, variabel pertama โk1โ hanya mencetak karakter 'g' untuk kata guru99, sementara ketika Anda menambahkan tanda multiline, ia mengambil karakter pertama dari semua elemen dalam string.
Ini kodenya
import re xx = """guru99 careerguru99 selenium""" k1 = re.findall(r"^\w", xx) k2 = re.findall(r"^\w", xx, re.MULTILINE) print(k1) print(k2)
- Kami mendeklarasikan variabel xx untuk string โguru99โฆ. careerguru99โฆ.seleniumโ
- Jalankan kode tanpa menggunakan flag multiline, ini hanya memberikan output 'g' dari baris
- Jalankan kode dengan flag โmultilineโ, ketika Anda mencetak 'k2' akan memberikan output sebagai 'g', 'c' dan 's'
- Jadi, perbedaannya bisa kita lihat setelah dan sebelum menambahkan multi-baris pada contoh di atas.
Demikian pula, Anda juga dapat menggunakan lainnya Python tanda seperti re.U (Unicode), re.L (Ikuti lokal), re.X (Izinkan Komentar), dll.
Python 2 Contoh
Kode di atas adalah Python 3 contoh, Jika Anda ingin menjalankannya Python 2 harap pertimbangkan kode berikut.
# Example of w+ and ^ Expression
import re
xx = "guru99,education is fun"
r1 = re.findall(r"^\w+",xx)
print r1
# Example of \s expression in re.split function
import re
xx = "guru99,education is fun"
r1 = re.findall(r"^\w+", xx)
print (re.split(r'\s','we are splitting the words'))
print (re.split(r's','split the words'))
# Using re.findall for text
import re
list = ["guru99 get", "guru99 give", "guru Selenium"]
for element in list:
z = re.match("(g\w+)\W(g\w+)", element)
if z:
print(z.groups())
patterns = ['software testing', 'guru99']
text = 'software testing is fun?'
for pattern in patterns:
print 'Looking for "%s" in "%s" ->' % (pattern, text),
if re.search(pattern, text):
print 'found a match!'
else:
print 'no match'
abc = 'guru99@google.com, careerguru99@hotmail.com, users@yahoomail.com'
emails = re.findall(r'[\w\.-]+@[\w\.-]+', abc)
for email in emails:
print email
# Example of re.M or Multiline Flags
import re
xx = """guru99
careerguru99
selenium"""
k1 = re.findall(r"^\w", xx)
k2 = re.findall(r"^\w", xx, re.MULTILINE)
print k1
print k2
Uji Anda Python Pengetahuan - Sanxin
1. Metode manakah yang digunakan untuk menemukan semua kemunculan pola dalam suatu string?
- riset()
- pertandingan ulang()
- re.findall()
- membagi ulang()
2. Apa yang direpresentasikan oleh kelas karakter \d dalam ekspresi reguler?
- Angka apa pun (0-9)
- Karakter non-digit apa pun
- Karakter spasi apa pun
- Huruf atau angka apa pun
3. Fungsi manakah yang akan Anda gunakan untuk memisahkan string berdasarkan spasi?
- re.pisah(r'\s', string)
- re.temukan semua(r'\w+', string)
- cocokkan kembali(r'\s+', string)
- re.pisah(r'\w+', string)
4. Apa perbedaan utama antara re.match() dan re.search()?
- re.match() mencari pola di awal string, sementara re.search() mencari pola di mana saja dalam string.
- re.match() mengembalikan semua kecocokan, sementara re.search() mengembalikan kecocokan pertama.
- re.search() lebih cepat dari re.match().
- Kedua fungsi tersebut berperilaku dengan cara yang sama.
Ringkasan
Ekspresi reguler dalam a bahasa pemrograman adalah string teks khusus yang digunakan untuk mendeskripsikan pola pencarian. Ini mencakup angka dan tanda baca serta semua karakter khusus seperti $#@!%, dll. Ekspresi dapat mencakup literal
- Pencocokan teks
- Pengulangan
- Bercabang
- Komposisi pola, dll.
In Python, ekspresi reguler dilambangkan sebagai RE (RE, regex, atau pola regex) yang disematkan Python modul ulang.
- Modul "re" disertakan dengan Python terutama digunakan untuk pencarian dan manipulasi string
- Juga sering digunakan untuk โScrapingโ halaman web (mengekstrak data dalam jumlah besar dari situs web)
- Metode Ekspresi Reguler meliputi re.match(),re.search()& re.findall()
- Lainnya Python Metode penggantian RegEx adalah sub() dan subn() yang digunakan untuk mengganti string yang cocok di re
- Python Flags Banyak Python Metode Regex dan fungsi Regex mengambil argumen opsional yang disebut Bendera
- Bendera ini dapat mengubah arti pola Regex yang diberikan
- Berbagai Python flag yang digunakan dalam Metode Regex adalah re.M, re.I, re.S, dll.







