სიმბოლოების გამეორების ოპერატორები
ხდება სიტუაციები, როდესაც საჭიროა მიუთითოთ, რომ
სიმბოლო მეორდება მოცემულ რაოდენობაზე.
თუ გამეორების ზუსტი რიცხვი უცნობია,
მაშინ შეგიძლიათ უბრალოდ დაწეროთ იგი რამდენჯერმე
- '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', without capturing 'abca'
and 'abea'.