Tanda Kurung Non-Penangkap dalam Regex Python
Tanda kurung ( ) memiliki dua fungsi -
pengelompokan karakter dan fungsi penangkap (capturing group). Lalu
bagaimana jika perlu mengelompokkan, tetapi
tidak ingin menangkapnya? Untuk mengatasi masalah seperti itu,
dirancang khusus tanda kurung non-penangkap (?: ) - mereka mengelompokkan,
tetapi tidak memasukkan ke dalam penangkap.
Contoh
Dalam contoh berikut, tanda kurung pertama kita butuhkan untuk pengelompokan, dan tanda kurung kedua - untuk penangkap. Akan tetapi, kedua tanda kurung tersebut menyimpan data ke dalam penangkap:
txt = 'abab123'
res = re.search('(ab)+([1-9]+)', txt)
Hasilnya, dalam penangkap kita akan berisi berikut ini:
print(res[0]) # akan mencetak 'abab123'
print(res[1]) # akan mencetak 'ab'
print(res[2]) # akan mencetak '123'
Contoh
Mari kita buat agar pasangan tanda kurung pertama hanya mengelompokkan, tetapi tidak memasukkan ke penangkap:
txt = 'abab123'
res = re.search('(?:ab)+([1-9]+)', txt)
Hasilnya, di penangkap pertama akan berisi angka kita:
print(res[1]) # akan mencetak '123'