Python регулярдык ifадаларындагы сактабаган кашаалар

Кашаалар ( ) эки функцияны аткарат - белгилерди топтоштуруу жана карман функциясы. Ал эми эгерде топтоштуруу керек болсо, бирок карманга салбоо керек болсо эмне кылуу керек? Мына ушундай маселени чечүү үчүн атайын сактабаган кашаалар (?: ) ойлоп табылды - алар топтоштурат, бирок карманга салышпайт.

Мисал

Төмөнкү мисалда биринчи кашаалар бизге топтоштуруу үчүн керек, ал эми экинчилери - карман үчүн. Бирок, экөө тең кашаалаар маалыматты карманга сакташат:

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' чыгарат