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

Python - Ekspresi Reguler

Halaman SebelumnyaHalaman Berikutnya

Ekspresi biasa adalah urutan karakter khusus yang membantu Anda mencocokkan atau menemukan string atau set string lain, menggunakan sintaks khusus yang disimpan dalam suatu pola. Ekspresi reguler banyak digunakan di dunia UNIX.

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

Kami akan membahas dua fungsi penting, yang akan digunakan untuk menangani ekspresi reguler. Tapi hal kecil dulu:Ada berbagai karakter, yang akan memiliki arti khusus ketika digunakan dalam ekspresi reguler. Untuk menghindari kebingungan saat menangani ekspresi reguler, kami akan menggunakan String Mentah sebagai r'expression' .

Pertandingan Fungsi

Fungsi ini mencoba mencocokkan pola RE ke string dengan bendera opsional .

Berikut adalah sintaks untuk fungsi ini

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

Berikut adalah deskripsi parameter

No.No. Parameter &Deskripsi
1

pola

Ini adalah ekspresi reguler yang harus dicocokkan.

2

string

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

3

bendera

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

pertandingan ulang fungsi mengembalikan kecocokan menolak keberhasilan, Tidak ada pada kegagalan. Kami menggunakangrup(jumlah) atau grup() fungsi mencocokkan objek untuk mendapatkan ekspresi yang cocok.

No.No. Mencocokkan Metode &Deskripsi Objek
1

grup(angka=0)

Metode ini mengembalikan seluruh kecocokan (atau nomor subgrup tertentu)

2

grup()

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

Contoh

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

Ketika kode di atas dijalankan, menghasilkan hasil sebagai berikut

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

Penelusuran Fungsi

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

Berikut adalah sintaks untuk fungsi ini

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

Berikut adalah deskripsi parameter

No.No. Parameter &Deskripsi
1

pola

Ini adalah ekspresi reguler yang harus dicocokkan.

2

string

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

3

bendera

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

pencarian ulang fungsi mengembalikan kecocokan menolak keberhasilan, tidak ada pada kegagalan. Kami menggunakan grup(jumlah) atau grup() fungsi mencocokkan objek untuk mendapatkan ekspresi yang cocok.

No.No. Mencocokkan Metode &Deskripsi Objek
1

grup(angka=0)

Metode ini mengembalikan seluruh kecocokan (atau nomor subgrup tertentu)

2

grup()

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

Contoh

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

Ketika kode di atas dijalankan, menghasilkan hasil sebagai berikut

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

Mencocokkan Versus Mencari

Python menawarkan dua operasi primitif yang berbeda berdasarkan ekspresi reguler:cocok memeriksa kecocokan hanya di awal string, sementara menelusuri memeriksa kecocokan di mana saja dalam string (inilah yang dilakukan Perl secara default).

Contoh

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

Ketika kode di atas dijalankan, menghasilkan hasil sebagai berikut

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

Cari dan Ganti

Salah satu re . yang paling penting metode yang menggunakan ekspresi reguler adalah sub .

Sintaks

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

Metode ini menggantikan semua kemunculan RE pola di string dengan balas , mengganti semua kemunculan kecuali maks asalkan. Metode ini mengembalikan string yang dimodifikasi.

Contoh

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

Ketika kode di atas dijalankan, menghasilkan hasil sebagai berikut

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

Pengubah Ekspresi Reguler:Tanda Opsi

Literal ekspresi reguler dapat menyertakan pengubah opsional untuk mengontrol berbagai aspek pencocokan. Pengubah ditentukan sebagai bendera opsional. Anda dapat memberikan beberapa pengubah menggunakan OR eksklusif (|), seperti yang ditunjukkan sebelumnya dan dapat diwakili oleh salah satu dari ini

No.No. Pengubah &Deskripsi
1

re.I

Melakukan pencocokan peka huruf besar/kecil.

2

re.L

Menafsirkan kata-kata sesuai dengan lokal saat ini. Interpretasi ini mempengaruhi grup alfabet (\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 baris mana pun (bukan hanya awal string).

4

re.S

Membuat titik (titik) cocok dengan karakter apa pun, termasuk baris baru.

5

re.U

Menafsirkan huruf sesuai dengan set karakter Unicode. Bendera ini memengaruhi perilaku \w, \W, \b, \B.

6

re.X

Mengizinkan sintaks ekspresi reguler "manis". Itu mengabaikan spasi putih (kecuali di dalam set [] atau saat diloloskan dengan garis miring terbalik) dan memperlakukan # yang tidak lolos sebagai penanda komentar.

Pola Ekspresi Reguler

Kecuali untuk karakter kontrol, (+ ? . * ^ $ ( ) [ ] { } | \) , semua karakter cocok dengan dirinya sendiri. Anda dapat menghindari karakter kontrol dengan mendahuluinya dengan garis miring terbalik.

Tabel berikut mencantumkan sintaks ekspresi reguler yang tersedia di Python

No.No. Pola &Deskripsi
1

^

Cocok dengan awal baris.

2

$

Cocok dengan akhir baris.

3

.

Cocok dengan karakter tunggal apa pun kecuali baris baru. Menggunakan opsi m memungkinkannya untuk mencocokkan baris baru juga.

4

[...]

Mencocokkan karakter tunggal apa pun dalam tanda kurung.

5

[^...]

Cocok dengan karakter tunggal apa pun yang tidak ada dalam tanda kurung

6

ulang*

Cocok dengan 0 atau lebih kemunculan ekspresi sebelumnya.

7

kembali+

Mencocokkan 1 atau lebih kemunculan ekspresi sebelumnya.

8

kembali?

Mencocokkan 0 atau 1 kemunculan ekspresi sebelumnya.

9

kembali{ n}

Sama persis dengan n jumlah kemunculan ekspresi sebelumnya.

10

kembali{ n,}

Cocok dengan n atau lebih kemunculan ekspresi sebelumnya.

11

kembali{ n, m}

Mencocokkan setidaknya n dan paling banyak m kemunculan ekspresi sebelumnya.

12

a| b

Cocok dengan a atau b.

13

(kembali)

Mengelompokkan ekspresi reguler dan mengingat teks yang cocok.

14

(?imx)

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

15

(?-imx)

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

18

(?-imx:re)

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

19

(?#...)

Komentar.

20

(?=re)

Menentukan posisi menggunakan pola. Tidak memiliki jangkauan.

21

(?! re)

Menentukan posisi menggunakan negasi pola. Tidak memiliki jangkauan.

22

(?> ulang)

Mencocokkan pola independen tanpa mundur.

23

\w

Mencocokkan karakter kata.

24

\W

Mencocokkan karakter bukan kata.

25

\s

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

26

\S

Cocok dengan bukan spasi.

27

\d

Mencocokkan angka. Setara dengan [0-9].

28

\D

Mencocokkan bukan angka.

29

\A

Cocok dengan awal string.

30

\Z

Cocok dengan akhir string. Jika ada baris baru, itu cocok sebelum baris baru.

31

\z

Cocok dengan akhir string.

32

\G

Mencocokkan titik di mana pertandingan terakhir selesai.

33

\b

Mencocokkan batas kata saat berada di luar tanda kurung. Mencocokkan spasi mundur (0x08) saat berada di dalam tanda kurung.

34

\B

Mencocokkan batas bukan kata.

35

\n, \t, dll.

Cocok dengan baris baru, carriage return, tab, dll.

36

\1...\9

Cocok dengan subekspresi yang dikelompokkan ke-n.

37

\10

Cocok dengan subekspresi yang dikelompokkan ke-n jika sudah cocok. Jika tidak, mengacu pada representasi oktal dari kode karakter.

Contoh Ekspresi Reguler

Karakter literal

No.No. Contoh &Deskripsi
1

python

Cocokkan "python".

Kelas karakter

No.No. Contoh &Deskripsi
1

[Pp]ython

Cocokkan "Python" atau "python"

2

gosok[kamu]

Cocokkan "ruby" atau "rube"

3

[aeiou]

Cocokkan salah satu vokal huruf kecil

4

[0-9]

Cocokkan angka apa pun; sama dengan [0123456789]

5

[a-z]

Cocokkan huruf kecil ASCII apa pun

6

[A-Z]

Cocokkan huruf besar ASCII apa pun

7

[a-zA-Z0-9]

Cocokkan salah satu di atas

8

[^aeiou]

Cocokkan apa pun selain vokal huruf kecil

9

[^0-9]

Cocokkan apa pun selain angka

Kelas Karakter Khusus

No.No. Contoh &Deskripsi
1

.

Cocokkan karakter apa pun kecuali baris baru

2

\d

Mencocokkan angka:[0-9]

3

\D

Cocokkan bukan angka:[^0-9]

4

\s

Mencocokkan karakter spasi putih:[ \t\r\n\f]

5

\S

Cocokkan bukan spasi putih:[^ \t\r\n\f]

6

\w

Mencocokkan satu karakter kata:[A-Za-z0-9_]

7

\W

Mencocokkan karakter bukan kata:[^A-Za-z0-9_]

Kasus Pengulangan

No.No. Contoh &Deskripsi
1

ruby?

Cocokkan "gosok" atau "ruby":y adalah opsional

2

ruby*

Cocokkan "gosok" plus 0 atau lebih ys

3

ruby+

Cocokkan "gosok" plus 1 atau lebih ys

4

\d{3}

Cocokkan tepat 3 digit

5

\d{3,}

Cocokkan 3 digit atau lebih

6

\d{3,5}

Cocokkan 3, 4, atau 5 digit

Pengulangan tidak serakah

Ini cocok dengan jumlah pengulangan terkecil

No.Sr. Contoh &Deskripsi
1

<.*>

Pengulangan serakah:cocok dengan "perl>"

2

<.*?>

Nongreedy:cocok dengan "" di "perl>"

Mengelompokkan dengan Tanda kurung

No.No. Contoh &Deskripsi
1

\D\d+

Tidak ada grup:+ berulang \d

2

(\D\d)+

Dikelompokkan:+ berulang \D\d pair

3

([Pp]ython(, )?)+

Cocokkan "Python", "Python, python, python", dll.

Referensi balik

Ini cocok dengan grup yang sebelumnya cocok lagi

No.Sr. Contoh &Deskripsi
1

([Pp])ython&\1ails

Cocokkan python&pails atau Python&Pails

2

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

String yang dikutip tunggal atau ganda. \1 cocok dengan apa pun yang cocok dengan grup pertama. \2 cocok dengan apa pun yang cocok dengan grup ke-2, dll.

Alternatif

No.No. Contoh &Deskripsi
1

python|perl

Cocokkan "python" atau "perl"

2

gosok(y|le))

Cocokkan "ruby" atau "rubel"

3

Python(!+|\?)

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

Jangkar

Ini perlu menentukan posisi kecocokan.

No.No. Contoh &Deskripsi
1

^Python

Cocokkan "Python" di awal string atau baris internal

2

Python$

Cocokkan "Python" di akhir string atau baris

3

\APython

Cocokkan "Python" di awal string

4

Python\Z

Cocokkan "Python" di akhir string

5

\bPython\b

Cocokkan "Python" pada batas kata

6

\brub\B

\B adalah batas bukan kata:cocokkan "gosok" di "rube" dan "ruby" tetapi tidak sendirian

7

Python(?=!)

Cocokkan "Python", jika diikuti dengan tanda seru.

8

Python(?!!)

Cocokkan "Python", jika tidak diikuti dengan tanda seru.

Sintaks Khusus dengan Tanda Kurung

No.No. Contoh &Deskripsi
1

R(?#komentar)

Cocok dengan "R". Selebihnya adalah komentar

2

R(?i)uby

Tidak peka huruf besar/kecil saat mencocokkan "uby"

3

R(?i:uby)

Sama seperti di atas

4

gosok(?:y|le))

Grup saja tanpa membuat \1 backreference


Python

  1. Tipe Data Python
  2. Operator Python
  3. Pernyataan lulus python
  4. Argumen Fungsi Python
  5. Kamus Python
  6. Python Iterator
  7. Penutupan Python
  8. Python RegEx
  9. Tanggal waktu Python
  10. Java - Ekspresi Reguler