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'