Python тіліндегі реттік өрнектердегі бұйра жақшалар
Операторлар '+', '*', '?'
жақсы, бірақ олардың көмегімен нақты қайталану
санын көрсету мүмкін емес. Бұл жағдайда
сізге {} операторы көмекке келеді.
Ол келесідей жұмыс істейді: {5}
- бес рет қайталанады, {2,5} – екіден беске дейін қайталанады
(екеуі де қоса алғанда), {2,}
- екі және одан да көп рет қайталанады. Мысалдарға
назар аударыңыз:
Мысал
Бұл мысалда іздеу үлгісі келесідей
көрінеді: 'x' әрпі, 'a' әрпі
bir немесе eki рет, 'x' әрпі:
txt = 'xx xax xaax xaaax'
res = re.sub('xa{1,2}x', '!', txt)
print(res)
Кодты орындау нәтижесі:
'xx ! ! xaaax'
Мысал
Бұл мысалда іздеу үлгісі келесідей
көрінеді: 'x' әрпі, 'a' әрпі
eki рет және одан да көп, 'x' әрпі:
txt = 'xx xax xaax xaaax'
res = re.sub('xa{2,}x', '!', txt)
print(res)
Кодты орындау нәтижесі:
'xx xax ! !'
Мысал
Бұл мысалда іздеу үлгісі келесідей
көрінеді: 'x' әрпі, 'a' әрпі
үш рет, 'x' әрпі:
txt = 'xx xax xaax xaaax'
res = re.sub('xa{3}x', '!', txt)
print(res)
Кодты орындау нәтижесі:
'xx xax xaax !'
Мысал
Бұл мысалда іздеу үлгісі келесідей
көрінеді: 'a' әрпі on рет:
txt = 'aaa aaaaaaaaaa aaa'
res = re.sub('a{10}', '!', txt)
print(res)
Кодты орындау нәтижесі:
'aaa ! aaa'
Мысал
Бұл мысалда келесі үлгі бар: 'x' әрпі,
'a' әрпі үш рет және одан аз,
'x' әрпі. Оны жүзеге асыру үшін,
3 санының алдында санды
көрсетпеуге болады, тек үтір қою керек:
txt = 'xx xax xaax xaaax'
res = re.sub('xa{,3}x', '!', txt)
print(res)
Кодты орындау нәтижесі:
'! ! ! !'
Мысал
3 алдындағы нөл де рұқсат етілген:
txt = 'xx xax xaax xaaax'
res = re.sub('xa{0,3}x', '!', txt)
print(res)
Кодты орындау нәтижесі:
'! ! ! !'
Практикалық есептер
Мына жол берілген:
txt = 'aa aba abba abbba abbbba abbbbba'
'abba', 'abbba', 'abbbba'
жолдарын және оларды ғана табатын реттік өрнек жазыңыз.
Мына жол берілген:
txt = 'aa aba abba abbba abbbba abbbbba'
'aba' түріндегі, ішінде 'b'
3-тен аз (қоса алғанда) кездесетін жолдарды табатын реттік өрнек жазыңыз.
Мына жол берілген:
txt = 'aa aba abba abbba abbbba abbbbba'
'aba' түріндегі, ішінде 'b'
4-тен көп (қоса алғанда) кездесетін жолдарды табатын реттік өрнек жазыңыз.