Незапамінальныя дужкі ў рэгулярках Python
Дужкі ( ) выконваюць дзве функцыі -
групоўку сімвалаў і функцыю кішэні. А
што рабіць, калі трэба згрупаваць, але
ў кішэню не класці? Для вырашэння такой
праблемы прыдуманы спецыяльныя незапамінальныя
дужкі (?: ) - яны групуюць,
але не кладуць у кішэню.
Прыклад
У наступным прыкладзе першыя дужкі нам патрэбны для групоўкі, а другія - для кішэні. Аднак, і тыя, і іншыя дужкі захоўваюць дадзеныя ў кішэню:
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'