Незапамінальныя дужкі ў рэгулярках Python

Дужкі ( ) выконваюць дзве функцыі - групоўку сімвалаў і функцыю кішэні. А што рабіць, калі трэба згрупаваць, але ў кішэню не класці? Для вырашэння такой праблемы прыдуманы спецыяльныя незапамінальныя дужкі (?: ) - яны групуюць, але не кладуць у кішэню.

Прыклад

У наступным прыкладзе першыя дужкі нам патрэбны для групоўкі, а другія - для кішэні. Аднак, і тыя, і іншыя дужкі захоўваюць дадзеныя ў кішэню:

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'