Python'da Düzenli İfadelerde Yakalamayan Parantezler
Parantezler ( ) iki işlevi yerine getirir -
karakterleri gruplama ve yakalama grubu (capturing group) işlevi. Peki
ya gruplama yapmanız gerekiyorsa ancak
yakalama grubuna almak istemiyorsanız? Bu sorunu
çözmek için özel yakalamayan
parantezler (?: ) tasarlanmıştır - bunlar gruplama yapar,
ancak yakalama grubuna almaz.
Örnek
Aşağıdaki örnekte, ilk parantezler gruplama için, ikinci parantezler ise yakalama grubu için gereklidir. Ancak, her iki parantez türü de verileri yakalama grubuna kaydeder:
txt = 'abab123'
res = re.search('(ab)+([1-9]+)', txt)
Sonuç olarak, yakalama gruplarımızda şu veriler olacaktır:
print(res[0]) # 'abab123' yazdırır
print(res[1]) # 'ab' yazdırır
print(res[2]) # '123' yazdırır
Örnek
İlk parantez çiftinin sadece gruplama yapmasını, ancak yakalama grubuna almamasını sağlayalım:
txt = 'abab123'
res = re.search('(?:ab)+([1-9]+)', txt)
Sonuç olarak, ilk yakalama grubunda sayımız olacaktır:
print(res[1]) # '123' yazdırır