Պայթոնի ռեգուլյար արտահայտություններում չպահպանող փակագծերը
Փակագծերը ( ) կատարում են երկու ֆունկցիա -
նիշերի խմբավորում և պոկետի ֆունկցիա: Իսկ
ի՞նչ անել, եթե պետք է խմբավորել, բայց
պոկետի մեջ չդնել: Նման խնդիրը լուծելու համար
ստեղծվել են հատուկ չպահպանող
փակագծեր (?: ) - դրանք խմբավորում են,
բայց չեն դնում պոկետի մեջ:
Օրինակ
Հաջորդ օրինակում առաջին փակագծերը մեզ անհրաժեշտ են խմբավորման համար, իսկ երկրորդները՝ պոկետի համար: Սակայն, և՛ մեկը, և՛ մյուս փակագծերը պահպանում են տվյալները պոկետում:
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'