Незахватајуће заграде у регуларним изразима Пајтона
Заграде ( ) обављају две функције -
груписање симбола и функцију групе (захвата). А
шта ако треба да се групише, али
да се не смешта у захватну групу? За решавање таквог
проблема направљене су специјалне незахватајуће
заграде (?: ) - оне групису,
али не смештају у захватну групу.
Пример
У следећем примеру прве заграде су нам потребне за груписање, а друге - за захватну групу. Међутим, и једне и друге заграде чувају податке у захватну групу:
txt = 'abab123'
res = re.search('(ab)+([1-9]+)', txt)
Као резултат, у нашим захватним групама ће бити следеће:
print(res[0]) # исписаће 'abab123'
print(res[1]) # исписаће 'ab'
print(res[2]) # исписаће '123'
Пример
Хајде да први пар заграда само групише, али не смешта у захватну групу:
txt = 'abab123'
res = re.search('(?:ab)+([1-9]+)', txt)
Као резултат, у првој захватној групи ће бити наш број:
print(res[1]) # исписаће '123'