Nesaugančios skliaustelės Python reguliariosiose išraiškose
Skliausteliai ( ) atlieka dvi funkcijas -
symbolių grupinimą ir kabineto funkciją. O
ką daryti, jei reikia sugrupuoti, bet
į kabinetą nedėti? Tokiai problemai spręsti
buvo sukurti specialūs nesaugantys
skliausteliai (?: ) - jie grupuoja,
bet nededa į kabinetą.
Pavyzdys
Šiame pavyzdyje pirmieji skliausteliai mums reikalingi grupavimui, o antrieji - kabinetui. Tačiau ir tie, ir tie skliausteliai išsaugo duomenis į kabinetą:
txt = 'abab123'
res = re.search('(ab)+([1-9]+)', txt)
Dėl to mūsų kabinetuose bus taip:
print(res[0]) # išves 'abab123'
print(res[1]) # išves 'ab'
print(res[2]) # išves '123'
Pavyzdys
Padarykime taip, kad pirmoji skliaustelių pora tik grupuotų, bet nedėtų į kabinetą:
txt = 'abab123'
res = re.search('(?:ab)+([1-9]+)', txt)
Dėl to pirmame kabinete bus mūsų skaičius:
print(res[1]) # išves '123'