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.
\dCocokkan digit. Setara dengan
[0-9].\DCocokkan non-digit. Setara dengan
[^0-9].\sCocokkan spasi putih. Setara dengan
[ \t-\r].\SCocokkan non-spasi putih. Setara dengan
[^ \t-\r].\wCocokkan "karakter kata" (ASCII saja). Setara dengan
[A-Za-z0-9_].\WCocokkan 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 harfiahr,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 gantinyadll.
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, atauNonejika regex tidak cocok. Ini adalah padanan pola-terkompilasi darimatchtingkat 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 - 1yang dicari. Jika endpos adalahNone(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, atauNonejika tidak ada posisi yang cocok. Ini adalah padanan pola-terkompilasi dari fungsisearch()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 - 1yang dicari. Jika endpos adalahNone(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.
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
Nonejika tidak cocok. Ini adalah pintasan tingkat modul:re.match(regex_str, string)setara denganre.compile(regex_str).match(string).Objek pencocokan yang sama juga dikembalikan oleh
search(), oleh metode pola-terkompilasiregex.match()/regex.search(), dan diteruskan ke fungsi penggantian yang digunakan olehsub().