Python регуляр ифодаларидаги 'или' командаси
'|' командаси
[ ] командасига нисбатан кучлирок
'или' вариантини ифодалайди.
Бу команда регулярни бир нечта
қисмларга бўлиш имконини беради.
Бунда изланаётган нарса
ёки регулярнинг бир қисмига, ёки
бошқасига тўғри келади. Келтирилган мисоллар билан танишайлик.
Мисол
Бу мисолда қидируш намунаси шундай:
учта 'a' ҳарф ёки учта
'b' ҳарф:
txt = 'aaa bbb abb'
res = re.sub('a{3}|b{3}', '!', txt)
print(res)
Коднинг ижро натижаси:
'! ! abb'
Мисол
Бу мисолда қидируш намунаси шундай:
учта 'a' ҳарф ёки 1 ва
ундан кўп 'b' ҳарфлар:
txt = 'aaa bbb bbbb bbbbb axx'
res = re.sub('a{3}|b+', '!', txt)
print(res)
Коднинг ижро натижаси:
'! ! ! ! axx'
Мисол
Бу мисолда қидируш намунаси шундай: бир ёки бир неча ҳарф ёки учта рақам:
txt = 'a ab abc 1 12 123'
res = re.sub('[a-z]+|\d{3}', '!', txt)
print(res)
Коднинг ижро натижаси:
'! ! ! 1 12 !'
Мисол
Вертикал чиззиқ регулярни иккита эмас, барча қисмларга бўлиши мумкин:
txt = 'aaa bbb ccc ddd'
res = re.sub('a+|b+|c+', '!', txt)
print(res)
Коднинг ижро натижаси:
'! ! ! ddd'
Мисол
Агар вертикал чиззиқ айлана ичида
турса, 'или' фақат
шу ички қисмда ишлайди.
Мисол учун куйидаги намунага кўра сатрларни
топаёлик: бошида 'a', ёки
'b' бир ёки бир неча марта
турса, сўнгра иккита 'x' ҳарф:
txt = 'axx bxx bbxx exx'
res = re.sub('(a|b+)xx', '!', txt)
print(res)
Коднинг ижро натижаси:
'! ! ! exx'
Амалий машқлар
Сатр берилган:
txt = 'aeeea aeea aea axa axxa axxxa'
Регуляр ёзинг, у куйидаги намунага кўра сатрларни
топсин: чеҳраларида 'a' ҳарфлар
турсин, ва улар ўртасида - 'e' ҳарф
ихтиёрий сонида ёки 'x' ҳарф
ихтиёрий сонида.
Сатр берилган:
txt = 'aeeea aeea aea axa axxa axxxa'
Регуляр ёзинг, у куйидаги намунага кўра сатрларни
топсин: чеҳраларида 'a' ҳарфлар
турсин, ва улар ўртасида - 'e' ҳарф
икки марта ёки 'x' ҳарф
ихтиёрий сонида.