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:
txt = 'abab123'
res = re.search('(ab)+([1-9]+)', txt)
Kao rezultat, u našim zamkama će biti sledeće:
print(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:
txt = 'abab123'
res = re.search('(?:ab)+([1-9]+)', txt)
Kao rezultat, u prvoj zamki će biti naš broj:
print(res[1]) # ispisaće '123'