Pythonда иваз сатридаги карманлар
sub метеди билан ишлаганда, агар
мунтазам ифодада бирор нарсани карманга қўйиш керак бўлса,
у ҳолда иваз сатрида ўша карманнинг мазмунини
қўйиш учун қоғоз чиғириқ \ ва карман
рақамини ёзиш мумкин. Масалан, \1 -
биринчи карман, \2 - иккинчи карман
ва ҳоказо.
Бу нимга керак ва уни қандай ишлатиш кераклигини мисоллар орқали кўрамиз.
Мисол
Келинг, барча рақамларни топиш орқали уларнинг ўрнига ўша рақамларни, лекин қавс ичида қўйамиз. Бунинг учун топилган барча рақамларни уларнинг ўзига, лекин қавс ичида иваз қиламиз:
txt = '1 23 456 xax'
res = re.sub('(\d+)', '(\1)', txt)
print(res)
Натижада ўзгарувчига куйидаги қиймат ёзилади:
'(1) (23) (456) xax'
Мисол
Келинг, атрофи икслар билан ўралган барча
сатрларни топиш орқали уларни ўша рақамларга,
лекин атрофида '!' белгилари билан иваз қиламиз:
txt = 'x1x x23x x456x xax'
res = re.sub('x(\d+)x', '!\1!', txt)
print(res)
Натижада ўзгарувчига куйидаги қиймат ёзилади:
'!1! !23! !456! xax'
Мисол
Келинг куйидаги вазифани ечамиз: 'aaa@bbb ccc@ddd'
сатри берилган - ҳарфлар, сўнгра ит белгиси, сўнгра ҳарфлар.
'aaa@bbb' қисм сатридаги '@' дан олдин ва кейинги
ҳарфларни ўринларини алмаштириш керак:
txt = 'aaa@bbb ccc@ddd'
res = re.sub('([a-z]+)@([a-z]+)', '\2@\1', txt)
print(res)
Натижада ўзгарувчига куйидаги қиймат ёзилади:
'bbb@aaa ccc@ddd'
Амалий вазифалар
Сатр берилган:
txt = '12 34 56 78'
Барча икки хонали рақамлардаги рақамларни ўринларини алмаштиринг.
Сана сатри берилган:
txt = '31.12.2025'
Бу санани '2025.12.31' кўринишига ўзгартиринг.