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โ€.

Contoh Ekspresi w+ dan ^

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.

ekspresi \s dalam fungsi re.split

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.

ekspresi \s dalam fungsi re.split

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.

pertandingan ulang()

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

gunakan pencarian()

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.

 Gunakan re.findall() di Python

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.

Contoh Flag re.M atau Multiline

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()
re.findall() digunakan untuk menemukan semua kemunculan pola dalam sebuah string.

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
\d mewakili digit apa pun (0-9).

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)
re.split(r'\s', string) membagi string berdasarkan spasi menggunakan ekspresi \s.

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.
re.match() mencari pola di awal string, sementara re.search() mencari pola di mana saja dalam string.

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.

Ringkaslah postingan ini dengan: