Python регулярдык ifадаларындагы сактабаган кашаалар
Кашаалар ( ) эки функцияны аткарат -
белгилерди топтоштуруу жана карман функциясы. Ал
эми эгерде топтоштуруу керек болсо, бирок
карманга салбоо керек болсо эмне кылуу керек? Мына ушундай
маселени чечүү үчүн атайын сактабаган
кашаалар (?: ) ойлоп табылды - алар топтоштурат,
бирок карманга салышпайт.
Мисал
Төмөнкү мисалда биринчи кашаалар бизге топтоштуруу үчүн керек, ал эми экинчилери - карман үчүн. Бирок, экөө тең кашаалаар маалыматты карманга сакташат:
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' чыгарат