Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> Python

Ekspresi Reguler Python: Panduan Praktis

Halaman Sebelumnya Halaman Berikutnya  

Sebuah ekspresi reguler adalah urutan karakter khusus yang membantu Anda mencocokkan atau menemukan string atau himpunan string lainnya, menggunakan sintaks khusus yang tersimpan dalam pola. Ekspresi reguler banyak digunakan di dunia UNIX.

Modul Python re memberikan dukungan penuh untuk ekspresi reguler seperti Perl di Python. Modul re raises exception re.error jika terjadi error saat mengkompilasi atau menggunakan ekspresi reguler.

Kita akan membahas dua fungsi penting, yang akan digunakan untuk menangani ekspresi reguler. Namun satu hal terlebih dahulu: Ada berbagai karakter yang akan memiliki arti khusus saat digunakan dalam ekspresi reguler. Untuk menghindari kebingungan saat menangani ekspresi reguler, kita akan menggunakan Raw Strings sebagai r'expression'.

Fungsi match

Fungsi ini mencoba mencocokkan pola RE pattern ke string dengan flags opsional.

Berikut adalah sintaks untuk fungsi ini −

 re.match(pattern, string, flags=0) 

Berikut adalah deskripsi parameter −

Sr.No. Parameter & Deskripsi
1

pattern

Ini adalah ekspresi reguler yang akan dicocokkan.

2

string

Ini adalah string yang akan dicari untuk mencocokkan pola di awal string.

3

flags

Anda dapat menentukan berbagai flag menggunakan OR bitwise (|). Ini adalah modifier, yang tercantum dalam tabel di bawah.

Fungsi re.match mengembalikan objek match pada kesuksesan, None pada kegagalan. Kita menggunakan fungsi group(num) atau groups() dari objek match untuk mendapatkan ekspresi yang dicocokkan.

Sr.No. Metode Objek Match & Deskripsi
1

group(num=0)

Metode ini mengembalikan seluruh kecocokan (atau subgrup spesifik num)

2

groups()

Metode ini mengembalikan semua subgrup yang cocok dalam tuple (kosong jika tidak ada)

Contoh

Live Demo
 #!/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!!" 

Saat kode di atas dieksekusi, hasilnya adalah sebagai berikut −

 matchObj.group() : Cats are smarter than dogs matchObj.group(1) : Cats matchObj.group(2) : smarter 

Fungsi search

Fungsi ini mencari kemunculan pertama pola RE pattern dalam string dengan flags opsional.

Berikut adalah sintaks untuk fungsi ini −

 re.search(pattern, string, flags=0) 

Berikut adalah deskripsi parameter −

Sr.No. Parameter & Deskripsi
1

pattern

Ini adalah ekspresi reguler yang akan dicocokkan.

2

string

Ini adalah string yang akan dicari untuk mencocokkan pola di mana saja dalam string.

3

flags

Anda dapat menentukan berbagai flag menggunakan OR bitwise (|). Ini adalah modifier, yang tercantum dalam tabel di bawah.

Fungsi re.search mengembalikan objek match pada kesuksesan, none pada kegagalan. Kita menggunakan fungsi group(num) atau groups() dari objek match untuk mendapatkan ekspresi yang dicocokkan.

Sr.No. Metode Objek Match & Deskripsi
1

group(num=0)

Metode ini mengembalikan seluruh kecocokan (atau subgrup spesifik num)

2

groups()

Metode ini mengembalikan semua subgrup yang cocok dalam tuple (kosong jika tidak ada)

Contoh

Live Demo
 #!/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!!" 

Saat kode di atas dieksekusi, hasilnya adalah sebagai berikut −

 searchObj.group() : Cats are smarter than dogs searchObj.group(1) : Cats searchObj.group(2) : smarter 

Pencocokan versus Pencarian

Python menawarkan dua operasi primitif yang berbeda berdasarkan ekspresi reguler: match memeriksa kecocokan hanya di awal string, sementara search memeriksa kecocokan di mana saja dalam string (ini adalah apa yang dilakukan Perl secara default).

Contoh

Live Demo
 #!/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!!" 

Saat kode di atas dieksekusi, hasilnya adalah sebagai berikut −

 No match!! search --> searchObj.group() : dogs 

Pencarian dan Penggantian

Salah satu metode re terpenting yang menggunakan ekspresi reguler adalah sub.

Sintaks

 re.sub(pattern, repl, string, max=0) 

Metode ini menggantikan semua kemunculan pola RE pattern dalam string dengan repl, menggantikan semua kemunculan kecuali max disediakan. Metode ini mengembalikan string yang dimodifikasi.

Contoh

Live Demo
 #!/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 

Saat kode di atas dieksekusi, hasilnya adalah sebagai berikut −

 Phone Num : 2004-959-559 Phone Num : 2004959559 

Modifier Ekspresi Reguler: Flag Opsional

Literal ekspresi reguler dapat menyertakan modifier opsional untuk mengontrol berbagai aspek pencocokan. Modifier ditentukan sebagai flag opsional. Anda dapat memberikan beberapa modifier menggunakan OR eksklusif (|), seperti sebelumnya dan dapat direpresentasikan oleh salah satu dari ini −

Sr.No. Modifier & Deskripsi
1

re.I

Melakukan pencocokan tanpa memperhatikan huruf besar/kecil.

2

re.L

Menginterpretasikan kata sesuai dengan lokal saat ini. Interpretasi ini mempengaruhi grup alfabetik (\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 setiap baris (bukan hanya awal string).

4

re.S

Membuat titik (dot) cocok dengan karakter apa pun, termasuk newline.

5

re.U

Menginterpretasikan huruf sesuai dengan set karakter Unicode. Flag ini mempengaruhi perilaku \w, \W, \b, \B.

6

re.X

Mengizinkan sintaks ekspresi reguler yang lebih "cantik". Ini mengabaikan spasi putih (kecuali di dalam set [] atau saat diescape oleh backslash) dan memperlakukan # yang tidak diescape sebagai penanda komentar.

Pola Ekspresi Reguler

Keadaan karakter kontrol, (+ ? . * ^ $ ( ) [ ] { } | \), semua karakter cocok dengan dirinya sendiri. Anda dapat escape karakter kontrol dengan mendahalikannya dengan backslash.

Tabel berikut mencantumkan sintaks ekspresi reguler yang tersedia di Python −

Sr.No. Pola & Deskripsi
1

^

Cocok dengan awal baris.

2

$

Cocok dengan akhir baris.

3

.

Cocok dengan karakter tunggal apa pun kecuali newline. Penggunaan opsi m memungkinkan untuk mencocokkan newline juga.

4

[...]

Cocok dengan karakter tunggal apa pun dalam kurung siku.

5

[^...]

Cocok dengan karakter tunggal apa pun yang tidak dalam kurung siku

6

re*

Cocok dengan 0 atau lebih kemunculan ekspresi sebelumnya.

7

re+

Cocok dengan 1 atau lebih kemunculan ekspresi sebelumnya.

8

re?

Cocok dengan 0 atau 1 kemunculan ekspresi sebelumnya.

9

re{ n}

Cocok dengan tepat n kemunculan ekspresi sebelumnya.

10

re{ n,}

Cocok dengan n atau lebih kemunculan ekspresi sebelumnya.

11

re{ n, m}

Cocok dengan paling sedikit n dan paling banyak m kemunculan ekspresi sebelumnya.

12

a| b

Cocok dengan a atau b.

13

(re)

Mengelompokkan ekspresi reguler dan mengingat teks yang cocok.

14

(?imx)

Mengaktifkan atau menonaktifkan sementara opsi i, m, atau x dalam ekspresi reguler. Jika dalam kurung, hanya area tersebut yang terpengaruh.

15

(?-imx)

Menonaktifkan sementara opsi i, m, atau x dalam ekspresi reguler. Jika dalam 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 kurung.

18

(?-imx: re)

Menonaktifkan sementara opsi i, m, atau x dalam kurung.

19

(?#...)

Komentar.

20

(?= re)

Menentukan posisi menggunakan pola. Tidak memiliki rentang.

21

(?! re)

Menentukan posisi menggunakan negasi pola. Tidak memiliki rentang.

22

(?> re)

Cocok dengan pola independen tanpa backtracking.

23

\w

Cocok dengan karakter kata.

24

\W

Cocok dengan karakter non-kata.

25

\s

Cocok dengan spasi putih. Setara dengan [\t\n\r\f].

26

\S

Cocok dengan non-spasi putih.

27

\d

Cocok dengan digit. Setara dengan [0-9].

28

\D

Cocok dengan non-digit.

29

\A

Cocok dengan awal string.

30

\Z

Cocok dengan akhir string. Jika newline ada, cocok tepat sebelum newline.

31

\z

Cocok dengan akhir string.

32

\G

Cocok dengan titik di mana kecocokan terakhir selesai.

33

\b

Cocok dengan batas kata ketika di luar kurung siku. Cocok dengan backspace (0x08) ketika di dalam kurung siku.

34

\B

Cocok dengan batas non-kata.

35

\n, \t, etc.

Cocok dengan newline, carriage return, tab, dll.

36

\1...\9

Cocok dengan subekspresi terkelompok ke-n.

37

\10

Cocok dengan subekspresi terkelompok ke-n jika sudah cocok. Jika tidak, merujuk ke representasi oktal dari kode karakter.

Contoh Ekspresi Reguler

Karakter Literal

Sr.No. Contoh & Deskripsi
1

python

Cocok dengan "python".

Kelas Karakter

Sr.No. Contoh & Deskripsi
1

[Pp]ython

Cocok dengan "Python" atau "python"

2

rub[ye]

Cocok dengan "ruby" atau "rube"

3

[aeiou]

Cocok dengan salah satu huruf vokal kecil

4

[0-9]

Cocok dengan digit apa pun; sama dengan [0123456789]

5

[a-z]

Cocok dengan huruf ASCII kecil apa pun

6

[A-Z]

Cocok dengan huruf ASCII besar apa pun

7

[a-zA-Z0-9]

Cocok dengan salah satu dari yang di atas

8

[^aeiou]

Cocok dengan apa pun selain huruf vokal kecil

9

[^0-9]

Cocok dengan apa pun selain digit

Kelas Karakter Khusus

Sr.No. Contoh & Deskripsi
1

.

Cocok dengan karakter apa pun kecuali newline

2

\d

Cocok dengan digit: [0-9]

3

\D

Cocok dengan non-digit: [^0-9]

4

\s

Cocok dengan karakter spasi putih: [ \t\r\n\f]

5

\S

Cocok dengan non-spasi putih: [^ \t\r\n\f]

6

\w

Cocok dengan karakter kata tunggal: [A-Za-z0-9_]

7

\W

Cocok dengan karakter non-kata: [^A-Za-z0-9_]

Kasus Pengulangan

Sr.No. Contoh & Deskripsi
1

ruby?

Cocok dengan "rub" atau "ruby": y adalah opsional

2

ruby*

Cocok dengan "rub" ditambah 0 atau lebih y

3

ruby+

Cocok dengan "rub" ditambah 1 atau lebih y

4

\d{3}

Cocok dengan tepat 3 digit

5

\d{3,}

Cocok dengan 3 atau lebih digit

6

\d{3,5}

Cocok dengan 3, 4, atau 5 digit

Pengulangan Non-lobat

Ini mencocokkan jumlah pengulangan terkecil −

Sr.No. Contoh & Deskripsi
1

<.*>

Pengulangan lobat: cocok dengan "<python>perl>"

2

<.*?>

Non-lobat: cocok dengan "<python>" dalam "<python>perl>"

Pengelompokan dengan Kurung

Sr.No. Contoh & Deskripsi
1

\D\d+

Tidak ada grup: + mengulang \d

2

(\D\d)+

Terkelompok: + mengulang pasangan \D\d

3

([Pp]ython(, )?)+

Cocok dengan "Python", "Python, python, python", dll.

Referensi Balik

Ini mencocokkan grup yang sebelumnya dicocokkan lagi −

Sr.No. Contoh & Deskripsi
1

([Pp])ython&\1ails

Cocok dengan python&pails atau Python&Pails

2

(['"])[^\1]*\1

String dengan kutip tunggal atau ganda. \1 cocok dengan apa pun yang dicocokkan oleh grup pertama. \2 cocok dengan apa pun yang dicocokkan oleh grup kedua, dll.

Alternatif

Sr.No. Contoh & Deskripsi
1

python|perl

Cocok dengan "python" atau "perl"

2

rub(y|le))

Cocok dengan "ruby" atau "ruble"

3

Python(!+|\?)

"Python" diikuti oleh satu atau lebih ! atau satu ?

Anchor

Ini perlu menentukan posisi kecocokan.

Sr.No. Contoh & Deskripsi
1

^Python

Cocok dengan "Python" di awal string atau baris internal

2

Python$

Cocok dengan "Python" di akhir string atau baris

3

\APython

Cocok dengan "Python" di awal string

4

Python\Z

Cocok dengan "Python" di akhir string

5

\bPython\b

Cocok dengan "Python" di batas kata

6

\brub\B

\B adalah batas non-kata: cocok dengan "rub" dalam "rube" dan "ruby" tetapi tidak sendiri

7

Python(?=!)

Cocok dengan "Python", jika diikuti oleh tanda seru.

8

Python(?!!)

Cocok dengan "Python", jika tidak diikuti oleh tanda seru.

Sintaks Khusus dengan Kurung

Sr.No. Contoh & Deskripsi
1

R(?#comment)

Cocok dengan "R". Sisa adalah komentar

2

R(?i)uby

Tanpa memperhatikan huruf besar/kecil saat mencocokkan "uby"

3

R(?i:uby)

Sama dengan di atas

4

rub(?:y|le))

Kelompok hanya tanpa menciptakan referensi balik \1


Python

  1. Menguasai Tipe Data Python: Panduan Praktis
  2. Menguasai Operator Python: Panduan Komprehensif
  3. Menguasai Pernyataan Pass Python: Panduan Praktis
  4. Menguasai Argumen Fungsi Python: Posisi, Kata Kunci, dan Parameter Default
  5. Menguasai Kamus Python: Pembuatan, Manipulasi, dan Teknik Lanjutan
  6. Menguasai Iterator Python: Cara Kerja dan Membuat Sendiri
  7. Penutupan (Closure) Python Dijelaskan: Cara Fungsi Bertingkat Mengambil Variabel
  8. Ekspresi Reguler Python (Modul re) – Panduan Praktis
  9. Menguasai Python datetime: Panduan Praktis Tanggal, Waktu, dan Zona Waktu
  10. Ekspresi Reguler Java: Menguasai Pencocokan Pola dengan java.util.regex