Операторҳои такроршавии рамзҳо
Мавориде пеш меояд, ки зарур аст ишора кард, ки
як рамз шумораи муайяни маротиба такрор мешавад.
Агар шумораи дақиқи такророт номаълум бошад,
пас метавонед онро чанд маротиба нависед
- 'aaaa'. Аммо чӣ кардан лозим аст, агар ниёз ба гуфтани чунин чиз бошад: як ё бештар маротиба такрор кардан?
Барои ин операторҳои (квантификаторҳои)
такрор мавҷуданд: аломати плюс + (як ё бештар маротиба),
ситора * (сифр ё бештар маротиба)
ва савол ? (сифр ё як маротиба).
Ин операторҳо ба он рамзе таъсир мерасонанд,
ки пеш аз онҳо истодааст.
Биёед коркарди ин операторҳоро дар мисолҳо бубинем.
Мисол
Ҳама зерсатрҳоро бо шаблони ҳарф
'x', ҳарфи 'a' як ё бештар маротиба,
ҳарфи 'x' пайдо кунем:
txt = 'xx xax xaax xaaax xbx'
res = re.sub('xa+x', '!', txt)
print(res)
Натиҷаи иҷрои код:
'xx ! ! ! xbx'
Мисол
Ҳама зерсатрҳоро бо шаблони ҳарф
'x', ҳарфи 'a' сифр ё бештар маротиба,
ҳарфи 'x' пайдо кунем:
txt = 'xx xax xaax xaaax xbx'
res = re.sub('xa*x', '!', txt)
print(res)
Натиҷаи иҷрои код:
'! ! ! ! xbx'
Мисол
Ҳама зерсатрҳоро бо шаблони ҳарф
'x', ҳарфи 'a' сифр ё як
маротиба, ҳарфи 'x' пайдо кунем:
txt = 'xx xax xaax xbx'
res = re.sub('xa?x', '!', txt)
print(res)
Натиҷаи иҷрои код:
'! ! xaax xbx'
Масъалаҳои амалӣ
Сатр дода шудааст:
txt = 'aa aba abba abbba abca abea'
Регулярное нависед, ки сатрҳои
'aba', 'abba', 'abbba'
ро бо шаблони зерин пайдо кунад: ҳарфи 'a', ҳарфи
'b' ҳар гуна шумораи маротиба, ҳарфи
'a'.
Сатр дода шудааст:
txt = 'aa aba abba abbba abca abea'
Регулярное нависед, ки сатрҳои
'aa', 'aba', 'abba',
'abbba'-ро бо шаблони зерин пайдо кунад: ҳарфи
'a', ҳарфи 'b' ҳар гуна шумораи маротиба
(аз ҷумла ҳеҷ маротиба), ҳарфи
'a'.
Сатр дода шудааст:
txt = 'aa aba abba abbba abca abea'
Регулярное нависед, ки сатрҳои
'aa', 'aba'-ро бо шаблони зерин пайдо кунад:
ҳарфи 'a', ҳарфи 'b' як
маротиба ё ҳеҷ, ҳарфи 'a'.
Сатр дода шудааст:
txt = 'aa aba abba abbba abca abea'
Регулярное нависед, ки сатрҳои
'aa', 'aba', 'abba',
'abbba'-ро пайдо кунад, 'abca'
ва 'abea'-ро нагирад.