Белгилерди кайталоочу операторлор
Белги белгилүү бир жолу кайталанышы керек болгон учурлар бар.
Так кайталоо саны белгисиз болсо,
анда жөн гана бир нече жолу жазууга болот
- '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' саптарын албаган регулярдуу туюнтма жазыңыз.