ბრძანება 'ან' პითონის რეგულარულ გამოსახულებებში
ბრძანება '|', რომელიც წარმოადგენს
'ან'-ის უფრო ძლიერ ვარიანტს
ბრძანებასთან [ ] შედარებით. ეს ბრძანება
საშუალებას აძლევს რეგულარული გამოსახულება დაიყოს რამდენიმე
ნაწილად. ამ შემთხვევაში, საძიებელი შეიძლება მოერგოს
ან რეგულარული გამოსახულების ერთ ნაწილს, ან
მეორეს. მოდით შევხედოთ მაგალითებს.
მაგალითი
ამ მაგალითში ძიების შაბლონი ასეთია:
სამი ასო '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'
ნებისმიერი რაოდენობით.