Python RegEx:re.match(), re.search(), re.findall() dengan Contoh
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 ekspresi reguler Python, hal pertama yang harus dikenali adalah bahwa semuanya 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 termasuk angka dan tanda baca dan semua karakter khusus seperti $#@!%, dll.
Dalam tutorial Python RegEx ini, kita akan belajar-
Sintaks Ekspresi Reguler
Contoh ekspresi w+ dan ^
Contoh ekspresi \s dalam fungsi re.split
Menggunakan metode ekspresi reguler
Menggunakan re.match()
Menemukan Pola dalam Teks (re.search())
Menggunakan re.findall untuk teks
Bendera Python
Contoh Bendera re.M atau Multiline
Misalnya, ekspresi reguler Python dapat memberi tahu program untuk mencari teks tertentu dari string dan kemudian mencetak hasilnya sesuai dengan itu. Ekspresi dapat mencakup
Pencocokan teks
Pengulangan
Percabangan
Komposisi pola, dll.
Ekspresi reguler atau RegEx dalam Python dilambangkan sebagai RE (RE, regex, atau pola regex) diimpor melalui modul re . Python mendukung ekspresi reguler melalui perpustakaan. RegEx di Python mendukung berbagai hal seperti Modifier, Identifier, dan karakter spasi putih .
Identifier
Pengubah
Karakter spasi putih
Diperlukan pelarian
\d=sembarang angka (digit)
\d mewakili sebuah digit. Contoh:\d{1,5} ia akan mendeklarasikan digit antara 1,5 seperti 424,444.545 dll.
\n =baris baru
. + * ? [] $ ^ () {} | \
\D=apa pun kecuali angka (bukan angka)
+ =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 ( Mencocokkan karakter non-alfanumerik tidak termasuk “_”)
^ mencocokkan awal 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 “varian”
——————-
\.
{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 “Scraping” (mengekstrak sejumlah besar data dari situs web)
Kita akan memulai tutorial ekspresi dengan latihan sederhana ini dengan menggunakan ekspresi (w+) dan (^).
Contoh w+ dan ^ Ekspresi
“^”: Ekspresi ini cocok dengan awal string
“dengan+ “:Ekspresi ini cocok dengan karakter alfanumerik dalam string
Di sini kita akan melihat Contoh RegEx Python tentang bagaimana kita dapat menggunakan ekspresi w+ dan ^ dalam kode kita. Kami membahas fungsi re.findall() dengan Python, nanti dalam tutorial ini tetapi untuk sementara kami hanya fokus pada ekspresi \w+ dan \^.
Misalnya, untuk string “guru99, education is fun” 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 menghapus +tanda dari w+, output akan berubah, dan itu hanya akan memberikan karakter pertama dari huruf pertama, yaitu, [g]
Contoh ekspresi \s dalam fungsi re.split
“s”:Ekspresi ini digunakan untuk membuat spasi dalam string
Untuk memahami cara kerja RegEx di Python ini, kita mulai dengan Contoh RegEx Python sederhana dari fungsi split. Dalam contoh, kami telah membagi 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.
Ketika Anda mengeksekusi kode ini, itu akan memberi Anda output ['we', 'are', 'splitting', 'the', 'words'].
Sekarang, mari kita lihat apa yang terjadi jika Anda menghapus “\" dari s. Tidak ada alfabet 's' di output, ini karena kami telah menghapus '\' dari string, dan mengevaluasi "s" sebagai karakter biasa dan dengan demikian membagi kata di mana pun ia menemukan "s" dalam string.
Demikian pula, ada serangkaian ekspresi reguler Python lainnya yang dapat Anda gunakan dalam berbagai cara di Python seperti \d,\D,$,\.,\b, dll.
Ini 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 di Python.
Menggunakan metode ekspresi reguler
Paket "re" menyediakan beberapa metode untuk benar-benar melakukan kueri pada string input. Kita akan melihat metode re dengan Python:
re.match()
re.search()
re.findall()
Catatan :Berdasarkan ekspresi reguler, Python menawarkan dua operasi primitif yang berbeda. Metode kecocokan memeriksa kecocokan hanya di awal string sementara pencarian memeriksa kecocokan di mana saja dalam string.
re.match()
re.match() fungsi re di Python akan mencari pola ekspresi reguler dan mengembalikan kemunculan pertama. Metode Python RegEx Match memeriksa kecocokan hanya di awal string. Jadi, jika kecocokan ditemukan di baris pertama, ia mengembalikan objek kecocokan. Tetapi jika kecocokan ditemukan di beberapa baris lain, fungsi Python RegEx Match mengembalikan null.
Misalnya, perhatikan kode fungsi Python re.match() berikut. Ungkapan "w+" dan "\W" akan cocok dengan kata-kata yang dimulai dengan huruf 'g' dan setelah itu, apa pun yang tidak dimulai dengan 'g' tidak diidentifikasi. Untuk memeriksa kecocokan setiap elemen dalam daftar atau string, kami menjalankan forloop dalam Contoh Python re.match() ini.
re.search():Menemukan Pola dalam Teks
re.search() fungsi akan mencari pola ekspresi reguler dan mengembalikan kemunculan pertama. Tidak seperti Python re.match(), ia akan memeriksa semua baris string input. Fungsi Python re.search() mengembalikan objek yang cocok saat pola ditemukan dan “null” jika pola tidak ditemukan
Bagaimana cara menggunakan pencarian()?
Untuk menggunakan fungsi search(), Anda perlu mengimpor modul Python re terlebih dahulu dan kemudian mengeksekusi kodenya. Fungsi Python re.search() mengambil "pola" dan "teks" untuk memindai dari string utama kami
Misalnya di sini kita mencari dua string literal "Pengujian perangkat lunak" "guru99", dalam string teks "Pengujian Perangkat Lunak menyenangkan". Untuk "pengujian perangkat lunak" kami menemukan kecocokan sehingga mengembalikan output dari Python re.search() Contoh sebagai "menemukan kecocokan", sedangkan untuk kata "guru99" kami tidak dapat menemukan string sehingga mengembalikan output sebagai "Tidak cocok ”.
re.findall()
findall() modul digunakan untuk mencari "semua" kejadian yang cocok dengan pola yang diberikan. 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.
Bagaimana Cara Menggunakan re.findall() dengan Python?
Di sini kami memiliki daftar alamat email, dan kami ingin semua alamat email diambil dari daftar, kami menggunakan metode re.findall() dengan Python. Ini akan menemukan semua alamat email dari daftar.
Berikut adalah kode lengkap untuk 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 = '[email protected], [email protected], [email protected]'
emails = re.findall(r'[\w\.-]+@[\w\.-]+', abc)
for email in emails:
print(email)
Bendera Python
Banyak Metode Regex Python dan fungsi Regex mengambil argumen opsional yang disebut Flags. Bendera ini dapat mengubah arti dari pola Regex Python yang diberikan. Untuk memahaminya, kita akan melihat satu atau dua contoh Bendera ini.
Berbagai flag yang digunakan dalam Python termasuk
Sintaks untuk Bendera Regex
Apa fungsi bendera ini
[re.M]
Buat awal/akhir mempertimbangkan setiap baris
[re.I]
Mengabaikan kasus
[re.S]
Buat [ . ]
[re.U]
Buat { \w,\W,\b,\B} mengikuti aturan Unicode
[re.L]
Buat {\w,\W,\b,\B} mengikuti lokal
[re.X]
Izinkan komentar dalam Regex
Contoh Bendera re.M atau Multiline
Dalam multiline karakter pola [^] cocok dengan karakter pertama dari string dan awal setiap baris (mengikuti segera setelah setiap baris baru). Sedangkan ekspresi “w” kecil digunakan untuk menandai spasi dengan karakter. Saat Anda menjalankan kode, variabel pertama "k1" hanya mencetak karakter 'g' untuk kata guru99, sedangkan saat Anda menambahkan flag 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, 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 juga, Anda juga dapat menggunakan flag Python lainnya seperti re.U (Unicode), re.L (Follow locale), re.X (Allow Comment), dll.
Contoh Python 2
Kode di atas adalah contoh Python 3, Jika Anda ingin menjalankan 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 = '[email protected], [email protected], [email protected]'
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
Ringkasan
Ekspresi reguler dalam bahasa pemrograman adalah string teks khusus yang digunakan untuk menggambarkan pola pencarian. Ini mencakup angka dan tanda baca dan semua karakter khusus seperti $#@!%, dll. Ekspresi dapat menyertakan literal
Pencocokan teks
Pengulangan
Percabangan
Komposisi pola, dll.
Dalam Python, ekspresi reguler dilambangkan sebagai RE (RE, regex, atau pola regex) disematkan melalui modul Python re.
Modul “re” disertakan dengan Python terutama digunakan untuk pencarian dan manipulasi string
Juga sering digunakan untuk “Scraping” halaman web (mengekstrak sejumlah besar data dari situs web)
Metode Ekspresi Reguler mencakup re.match(),re.search()&re.findall()
Metode penggantian RegEx Python lainnya adalah sub() dan subn() yang digunakan untuk mengganti string yang cocok dalam re
Bendera Python Banyak Metode Regex Python dan fungsi Regex mengambil argumen opsional yang disebut Bendera
Bendera ini dapat mengubah arti dari pola Regex yang diberikan
Berbagai flag Python yang digunakan dalam Metode Regex adalah re.M, re.I, re.S, dll.