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:

pythontxt = 'abab123'
res = re.search('(ab)+([1-9]+)', txt)

Hasilnya, dalam penangkap kita akan berisi berikut ini:

pythonprint(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:

pythontxt = 'abab123'
res = re.search('(?:ab)+([1-9]+)', txt)

Hasilnya, di penangkap pertama akan berisi angka kita:

pythonprint(res[1]) # akan mencetak '123'