re --- ekspresi reguler sederhana

Modul ini mengimplementasikan operasi ekspresi reguler. Sintaks ekspresi reguler yang didukung merupakan subset dari modul re CPython (dan sebenarnya merupakan subset dari ekspresi reguler POSIX yang diperluas).

Operator dan urutan khusus yang didukung adalah:

.

Cocokkan karakter apa pun.

[...]

Cocokkan himpunan karakter. Karakter individual dan rentang didukung, termasuk himpunan yang dinegasikan (misalnya [^a-c]).

^

Cocokkan awal string.

$

Cocokkan akhir string.

?

Cocokkan nol atau satu dari sub-pola sebelumnya.

*

Cocokkan nol atau lebih dari sub-pola sebelumnya.

+

Cocokkan satu atau lebih dari sub-pola sebelumnya.

??

Versi non-greedy dari ?, cocokkan nol atau satu, dengan preferensi untuk nol.

*?

Versi non-greedy dari *, cocokkan nol atau lebih, dengan preferensi untuk pencocokan terpendek.

+?

Versi non-greedy dari +, cocokkan satu atau lebih, dengan preferensi untuk pencocokan terpendek.

|

Cocokkan sub-pola sisi kiri atau sisi kanan dari operator ini.

(...)

Pengelompokan. Setiap grup bersifat menangkap (substring yang ditangkap dapat diakses dengan metode match.group()).

(?:...)

Pengelompokan non-menangkap. Setiap grup dicocokkan menggunakan aturan yang sama seperti pengelompokan biasa, tetapi tidak akan menjadi bagian dari objek pencocokan.

\d

Cocokkan digit. Setara dengan [0-9].

\D

Cocokkan non-digit. Setara dengan [^0-9].

\s

Cocokkan spasi putih. Setara dengan [ \t-\r].

\S

Cocokkan non-spasi putih. Setara dengan [^ \t-\r].

\w

Cocokkan "karakter kata" (ASCII saja). Setara dengan [A-Za-z0-9_].

\W

Cocokkan non-"karakter kata" (ASCII saja). Setara dengan [^A-Za-z0-9_].

\

Karakter pelarian. Karakter lain apa pun yang mengikuti garis miring terbalik, selain yang tercantum di atas, diambil secara harfiah. Misalnya, \* setara dengan karakter harfiah * (tidak diperlakukan sebagai operator *). Perhatikan bahwa \r, \n, dll. tidak ditangani secara khusus, dan akan setara dengan huruf harfiah r, n, dll. Karena itu, tidak disarankan menggunakan string Python mentah (r"") untuk ekspresi reguler. Misalnya, r"\r\n" ketika digunakan sebagai ekspresi reguler setara dengan "rn". Untuk mencocokkan karakter CR diikuti oleh LF, gunakan "\r\n".

TIDAK DIDUKUNG:

  • pengulangan terhitung ({m,n})

  • grup bernama ((?P<name>...))

  • pernyataan lebih lanjut (\b, \B)

  • escape karakter khusus seperti \r, \n - gunakan escape Python sendiri sebagai gantinya

  • dll.

Contoh:

import re

# As re doesn't support escapes itself, use of r"" strings is not
# recommended.
regex = re.compile("[\r\n]")

regex.split("line1\rline2\nline3\r\n")

# Result:
# ['line1', 'line2', 'line3', '', '']

Fungsi

re.compile(regex_str: str, flags: int = 0) 'regex'

Kompilasi ekspresi reguler, kembalikan objek regex.

re.search(regex_str: str, string: str) 'match | None'

Kompilasi regex_str dan cari dalam sebuah string. Tidak seperti match, ini akan mencari posisi pertama dalam string yang cocok dengan regex (yang masih bisa 0 jika regex terjangkar).

re.sub(regex_str: str, replace: str | Callable, string: str, count: int = 0, flags: int = 0, /) str

Kompilasi regex_str dan cari dalam string, mengganti semua kecocokan dengan replace, dan mengembalikan string baru.

replace bisa berupa string atau fungsi. Jika berupa string, maka urutan pelarian dalam bentuk \<number> dan \g<number> dapat digunakan untuk mengembangkan ke grup yang sesuai (atau string kosong untuk grup yang tidak cocok). Jika replace adalah fungsi, maka harus menerima satu argumen (pencocokan) dan harus mengembalikan string pengganti.

Jika count ditentukan dan bukan nol, maka substitusi akan berhenti setelah sejumlah substitusi tersebut dilakukan. Argumen flags diabaikan.

Objek Regex

Ekspresi reguler yang dikompilasi. Instans kelas ini dibuat menggunakan re.compile().

class re.regex

Objek ekspresi reguler yang dikompilasi dan dikembalikan oleh re.compile().

match(string: str, pos: int = 0, endpos: int | None = None) 'match | None'

Terapkan regex yang dikompilasi ini ke string, terjangkar di awal wilayah pencarian, dan kembalikan objek match, atau None jika regex tidak cocok. Ini adalah padanan pola-terkompilasi dari match tingkat modul, dan jauh lebih efisien ketika pola yang sama diterapkan ke beberapa string.

Parameter opsional pos memberikan indeks dalam string di mana pencarian akan dimulai; nilai defaultnya adalah 0. Ini tidak sepenuhnya setara dengan mengiris string; karakter pola '^' cocok di awal sebenarnya dari string dan di posisi tepat setelah baris baru, tetapi tidak harus di indeks tempat pencarian dimulai.

Parameter opsional endpos membatasi seberapa jauh string dicari; seolah-olah string hanya sepanjang endpos karakter, sehingga hanya karakter dari pos hingga endpos - 1 yang dicari. Jika endpos adalah None (nilai default), seluruh string dicari.

search(string: str, pos: int = 0, endpos: int | None = None) 'match | None'

Pindai melalui string mencari lokasi pertama di mana regex yang dikompilasi ini menghasilkan kecocokan, dan kembalikan objek match, atau None jika tidak ada posisi yang cocok. Ini adalah padanan pola-terkompilasi dari fungsi search() tingkat modul, dan jauh lebih efisien ketika pola yang sama diterapkan ke beberapa string.

Parameter opsional pos memberikan indeks dalam string di mana pencarian akan dimulai; nilai defaultnya adalah 0. Ini tidak sepenuhnya setara dengan mengiris string; karakter pola '^' cocok di awal sebenarnya dari string dan di posisi tepat setelah baris baru, tetapi tidak harus di indeks tempat pencarian dimulai.

Parameter opsional endpos membatasi seberapa jauh string dicari; seolah-olah string hanya sepanjang endpos karakter, sehingga hanya karakter dari pos hingga endpos - 1 yang dicari. Jika endpos adalah None (nilai default), seluruh string dicari.

sub(replace: str | Callable, string: str, count: int = 0, flags: int = 0, /) str

Cari regex yang dikompilasi ini dalam string, ganti semua kecocokan dengan replace, dan kembalikan string baru. Ini adalah padanan pola-terkompilasi dari fungsi sub() tingkat modul, dan jauh lebih efisien ketika pola yang sama diterapkan ke beberapa string.

replace bisa berupa string atau fungsi. Jika berupa string, maka urutan pelarian dalam bentuk \<number> dan \g<number> dapat digunakan untuk mengembangkan ke grup yang sesuai (atau string kosong untuk grup yang tidak cocok). Jika replace adalah fungsi, maka harus menerima satu argumen (pencocokan) dan harus mengembalikan string pengganti.

Jika count ditentukan dan bukan nol, maka substitusi akan berhenti setelah sejumlah substitusi tersebut dilakukan. Argumen flags diabaikan.

split(string: str, max_split: int = -1, /) List[str]

Pisahkan string menggunakan regex. Jika max_split diberikan, itu menentukan jumlah maksimum pemisahan yang dilakukan. Mengembalikan daftar string (mungkin ada hingga elemen max_split+1 jika itu ditentukan).

Objek Pencocokan

Objek pencocokan menyimpan hasil pencocokan yang berhasil.

class re.match(regex_str: str, string: str)

Cocokkan regex_str terhadap string, terjangkar di awal string, dan kembalikan objek pencocokan, atau None jika tidak cocok. Ini adalah pintasan tingkat modul: re.match(regex_str, string) setara dengan re.compile(regex_str).match(string).

Objek pencocokan yang sama juga dikembalikan oleh search(), oleh metode pola-terkompilasi regex.match() / regex.search(), dan diteruskan ke fungsi penggantian yang digunakan oleh sub().

group(index: int) str

Kembalikan (sub)string yang cocok. index adalah 0 untuk kecocokan keseluruhan, 1 dan di atasnya untuk setiap grup yang menangkap. Hanya grup numerik yang didukung.