Nepamteće zagrade u regularnim izrazima Pythona

Zagrade ( ) obavljaju dve funkcije - grupisanje karaktera i funkciju zamke (capture grupe). A šta ako treba da grupišete, ali da ne stavite u zamku? Za rešavanje takvog problema su osmišljene posebne nepamteće zagrade (?: ) - one grupisu, ali ne stavljaju u zamku.

Primer

U sledećem primeru prve zagrade su nam potrebne za grupisanje, a druge - za zamku. Međutim, i jedne i druge zagrade pamte podatke u zamku:

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

Kao rezultat, u našim zamkama će biti sledeće:

pythonprint(res[0]) # ispisaće 'abab123'
print(res[1]) # ispisaće 'ab'
print(res[2]) # ispisaće '123'

Primer

Hajde da prvi par zagrada samo grupiše, ali ne stavlja u zamku:

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

Kao rezultat, u prvoj zamki će biti naš broj:

pythonprint(res[1]) # ispisaće '123'