Незахватајуће заграде у регуларним изразима Пајтона

Заграде ( ) обављају две функције - груписање симбола и функцију групе (захвата). А шта ако треба да се групише, али да се не смешта у захватну групу? За решавање таквог проблема направљене су специјалне незахватајуће заграде (?: ) - оне групису, али не смештају у захватну групу.

Пример

У следећем примеру прве заграде су нам потребне за груписање, а друге - за захватну групу. Међутим, и једне и друге заграде чувају податке у захватну групу:

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

Као резултат, у нашим захватним групама ће бити следеће:

pythonprint(res[0]) # исписаће 'abab123'
print(res[1]) # исписаће 'ab'
print(res[2]) # исписаће '123'

Пример

Хајде да први пар заграда само групише, али не смешта у захватну групу:

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

Као резултат, у првој захватној групи ће бити наш број:

pythonprint(res[1]) # исписаће '123'