Python регуляр ифодаларида сақланмайдиган қавслар
Қавслар ( ) икки функцияни бажаради -
белгиларни гуруҳлаш ва карман функцияси. А
агар гуруҳлаш керак бўлса, лекин
карманга солиш шарт эмас бўлса? Бундай
муаммони ҳал этиш учун махсус сақланмайдиган
қавслар (?: ) яратилган -
улар гуруҳлайди, лекин карманга солишмайди.
Мисол
Кейинги мисолда биринчи қавслар бизга гуруҳлаш учун керак, иккинчилари эса карман учун. Бирок, ҳамма қавслар маълумотларни карманга сақлайди:
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' чиқади