Flag untuk String Regex di Python
Untuk mengatur flag sebagai salah satu parameter opsional untuk metode yang bekerja dengan regex, gunakan sintaks berikut:
flags=re.nama_flag
Flag Utama untuk Bekerja dengan Regex
| Flag | Fungsi |
|---|---|
re.IGNORECASE |
Mengabaikan huruf besar/kecil dari karakter. |
re.DOTALL |
Titik mewakili karakter apa pun, termasuk baris baru. |
re.I |
Membuat pencarian tidak peka terhadap huruf besar/kecil. |
re.L |
Mencari kata sesuai dengan bahasa saat ini.
Interpretasi ini mempengaruhi grup alfabet
(\w dan \W), serta
perilaku batas kata (\b dan
\B).
|
re.M |
Karakter $ melakukan pencarian di akhir
setiap baris teks (bukan hanya akhir teks)
dan karakter ^ melakukan pencarian di awal
setiap baris teks (bukan hanya di awal
teks).
|
re.S |
Mengubah nilai titik (.) menjadi
cocok dengan karakter apa pun, termasuk baris
baru.
|
re.U |
Menginterpretasikan huruf sesuai dengan
set karakter Unicode. Flag ini mempengaruhi
perilaku \w, \W, \b,
\B. Di Python 3+ flag ini
diatur secara default.
|
re.X |
Memungkinkan sintaks ekspresi reguler
multibaris. Ini mengabaikan spasi di dalam
pola (kecuali spasi di dalam set
[] atau ketika di-escape
dengan backslash) dan memperlakukan
'#' yang tidak di-escape sebagai komentar.
|
Contoh
Dengan flag re.IGNORECASE Anda dapat
mengabaikan huruf besar/kecil karakter. Mari
lihat bagaimana hal ini dilakukan. Dalam contoh ini
regex hanya akan menemukan huruf kecil:
txt = 'aaa bbb CCC DDD'
res = re.sub('[a-z]+', '!', txt)
print(res)
Hasil eksekusi kode:
'! ! CCC DDD'
Contoh
Dan sekarang tambahkan flag re.IGNORECASE ke parameter keempat
metode, dan regex akan
mulai mencari karakter di semua huruf:
txt = 'aaa AAA bbb BBB'
res = re.sub('[a-z]+', '!', txt, flags=re.IGNORECASE)
print(res)
Hasil eksekusi kode:
'! ! ! !'
Contoh
Mari temukan semua baris baru dengan regex:
txt = '''aaa
bbb'''
res = re.sub('\n', '!', txt)
print(res)
Hasil kode yang dieksekusi:
'aaa!bbb'
Contoh
Tetapi, jika perlu mengganti semua karakter, maka dengan menempatkan titik di regex, baris baru tidak akan tertangkap:
txt = '''aaa
bbb'''
res = re.sub('.', '!', txt)
print(res)
Hasil kode yang dieksekusi:
'!!!
!!!'
Contoh
Untuk memperbaiki kesalahan ini, sebaiknya
terapkan flag re.DOTALL:
res = re.sub('.', '!', txt, flags=re.DOTALL)
print(res)
Hasil kode yang dieksekusi:
'!!!!!!!'
Contoh
Di parameter, beberapa flag juga dapat diteruskan,
dengan menempatkan operator + di antara mereka.
Pertama, mari ganti huruf 'a'
di akhir baris:
txt = '''
aaa
AAA
aaa'''
res = re.sub('aaa$', '!', txt)
print(res)
Hasil kode yang dieksekusi:
'''
aaa
AAA
!
'''
Contoh
Sekarang atur flag re.M:
res = re.sub('aaa$', '!', txt, flags=re.M)
print(res)
Hasil kode yang dieksekusi:
'''
!
AAA
!
'''
Contoh
Sekarang mari terapkan juga flag untuk mengabaikan huruf besar/kecil:
res = re.sub('aaa$', '!', txt, flags=re.M+re.IGNORECASE)
print(res)
Hasil kode yang dieksekusi:
'''
!
!
!
'''