Nesaglabājošās iekavas Python regulārajās izteiksmēs
Iekavas ( ) veic divas funkcijas -
simbolu grupēšanu un capture grupas funkciju. Bet
ko darīt, ja nepieciešams sagrupēt, bet
neielikt capture grupā? Šīs problēmas risināšanai
tika izgudrotas speciālās nesaglabājošās
iekavas (?: ) - tās grupē,
bet neieliek capture grupā.
Piemērs
Nākamajā piemērā pirmās iekavas mums ir vajadzīgas grupēšanai, bet otrajās - capture grupai. Tomēr, gan vienas, gan otrās iekavas saglabā datus capture grupā:
txt = 'abab123'
res = re.search('(ab)+([1-9]+)', txt)
Rezultātā mūsu capture grupās būs sekojošais:
print(res[0]) # izvadīs 'abab123'
print(res[1]) # izvadīs 'ab'
print(res[2]) # izvadīs '123'
Piemērs
Padarīsim tā, lai pirmā iekavu pāris tikai grupētu, bet neieliktu capture grupā:
txt = 'abab123'
res = re.search('(?:ab)+([1-9]+)', txt)
Rezultātā pirmajā capture grupā būs mūsu skaitlis:
print(res[1]) # izvadīs '123'