სიმბოლოების ნაკრები Python-ის რეგულარულ გამოსახულებებში
სიმბოლოთა ჯგუფები \d და \w არ
არის ძალიან მოქნილი. უბრალო ამოცანაც კი,
როგორიცაა ყველა ასოს პოვნა, მაგრამ არა ციფრები -
ვერ წყდება მათი მეშვეობით. ასეთი ამოცანებისთვის
უნდა გამოიყენოთ კვადრატული ფრჩხილები,
რომლებიც წარმოადგენენ 'ან' ოპერაციას.
კვადრატული ფრჩხილები ცვლის ერთ სიმბოლოს,
ნებისმიერს მათ შიგნით ჩამოთვლილთაგან.
მაგალითად, ასე: x[abc]x - ჩვენ
ვამბობთ, რომ კიდეებზე უნდა იდგეს ასო
იქსი, ხოლო შიგნით - ერთი სიმბოლო: ან 'a',
ან 'b', ან 'c'.
კვადრატული ფრჩხილების შემდეგ შეგიძლიათ დაწეროთ
გამეორების ოპერატორები. მაგალითად, ასე:
x[abc]+x - ჩვენ ვამბობთ, რომ იქსებს შორის
შეიძლება იყოს ნებისმიერი რაოდენობის სიმბოლო
'a', 'b' და 'c' -
ნებისმიერ კომბინაციაში.
შეგიძლიათ არა მხოლოდ სიმბოლოების ჩამოთვლა, არამედ
სიმბოლოთა ჯგუფების შექმნა, ორ სიმბოლოს შორის დეფისის ჩაწერით.
მაგალითად, ასე: [a-d] - ჩვენ ვიღებთ ყველა სიმბოლოს
'a'-დან 'd'-მდე.
მოდით შევხედოთ მაგალითებს.
მაგალითი
ამ მაგალითში ძიების შაბლონი ასე გამოიყურება:
იქსებს შორის ნებისმიერი ასო
'a'-დან 'z'-მდე:
კოდის შესრულების შედეგი:
'! ! ! x@x'
მაგალითი
ამ მაგალითში ძიების შაბლონი ასე გამოიყურება:
იქსებს შორის ნებისმიერი ასო
'a'-დან 'k'-მდე:
txt = 'xax xbx xmx x@x'
res = re.sub('x[a-k]x', '!', txt)
print(res)
კოდის შესრულების შედეგი:
'! ! xmx x@x'
მაგალითი
ამ მაგალითში ძიების შაბლონი ასე გამოიყურება:
იქსებს შორის ნებისმიერი ასო
'A'-დან 'Z'-მდე:
txt = 'xax xBx xcx x@x'
res = re.sub('x[A-Z]x', '!', txt)
print(res)
კოდის შესრულების შედეგი:
'xax ! xcx x@x'
მაგალითი
ამ მაგალითში ძიების შაბლონი ასე გამოიყურება:
იქსებს შორის ნებისმიერი ციფრი 0-დან
9-მდე:
txt = 'xax x1x x3x x5x x@x'
res = re.sub('x[0-9]x', '!', txt)
print(res)
კოდის შესრულების შედეგი:
'xax ! ! ! x@x'
მაგალითი
ამ მაგალითში ძიების შაბლონი ასე გამოიყურება:
იქსებს შორის ნებისმიერი ციფრი 3-დან
7-მდე:
txt = 'xax x1x x3x x5x x@x'
res = re.sub('x[3-7]x', '!', txt)
print(res)
კოდის შესრულების შედეგი:
'xax x1x ! ! x@x'
მაგალითი
ამ მაგალითში ძიების შაბლონი ასე გამოიყურება:
იქსებს შორის ნებისმიერი ასო
'a'-დან 'z'-მდე ან ციფრი
1-დან 9-მდე:
txt = 'xax x1x x3x x5x x@x'
res = re.sub('x[a-z1-9]x', '!', txt)
print(res)
კოდის შესრულების შედეგი:
'! ! ! ! x@x'
მაგალითი
ამ მაგალითში ძიების შაბლონი ასე გამოიყურება:
იქსებს შორის ნებისმიერი ასო
'a'-დან 'z'-მდე ან ასო
'A'-დან 'Z'-მდე:
txt = 'xax xBx xcx x5x x@x'
res = re.sub('x[a-zA-Z]x', '!', txt)
print(res)
კოდის შესრულების შედეგი:
'! ! ! x5x x@x'
მაგალითი
ამ მაგალითში ძიების შაბლონი ასე გამოიყურება:
იქსებს შორის ნებისმიერი ასო
'a'-დან 'z'-მდე ან ციფრები 1,
2:
txt = 'xax xbx x1x x2x x3x'
res = re.sub('x[a-z12]x', '!', txt)
print(res)
კოდის შესრულების შედეგი:
'! ! ! ! x3x'
მაგალითი
ამ მაგალითში ძიების შაბლონი ასე გამოიყურება:
იქსებს შორის ასო 'a'-დან
'z'-მდე 1 ან მეტი
რაოდენობით:
txt = 'xx xabesx xaadx x123x xa3x'
res = re.sub('x[a-z]+x', '!', txt)
print(res)
კოდის შესრულების შედეგი:
'xx ! ! ! x123x xa3x'
მაგალითი
გავხადოთ ისე, რომ ასოების რაოდენობა შეიძლება იყოს ნულიც:
txt = 'xx xabesx xaadx x123x xa3x'
res = re.sub('x[a-z]*x', '!', txt)
print(res)
შედეგად მივიღებთ:
'! ! ! ! x123x xa3x'
მაგალითი
კვადრატული ფრჩხილების შიგნით ასევე შეიძლება ეკრანირებული სიმბოლოების მითითება. მოდით ვიპოვოთ ასოებისა და ციფრების მიმდევრობა, რომელიც მეორდება ნულზე მეტი ან ტოლი რაოდენობით:
txt = 'xx x@x xadx xas12x xa3x'
res = re.sub('x[a-z\d]*x', '!', txt)
print(res)
კოდის შესრულების შედეგი:
'! x@x ! ! !'
მაგალითი
თუ კიდევ ერთი კვადრატული ფრჩხილების მითითება გვჭირდება, მაშინ მათი ეკრანირებაც აუცილებლად გვჭირდება:
txt = 'xx xrx xas[]x x3x'
res = re.sub('x[a-z\[\]]*x', '!', txt)
print(res)
კოდის შესრულების შედეგი:
'! ! ! x3x'
პრაქტიკული ამოცანები
მოცემულია სტრიქონი:
txt = 'aba aea aca aza axa'
დაწერეთ რეგულარული გამოსახულება, რომელიც იპოვის
შემდეგი შაბლონით: კიდეებზე დგას ასო
'a', ხოლო მათ შორის - ასო 'b',
'e' ან 'x'.
მოცემულია სტრიქონი:
txt = 'a1a a3a a7a a9a aba'
დაწერეთ რეგულარული გამოსახულება, რომელიც იპოვის
შემდეგი შაბლონით: კიდეებზე დგას ასო
'a', ხოლო მათ შორის - ციფრი
3-დან 6-მდე.
მოცემულია სტრიქონი:
txt = 'aba aea afa aha aga'
დაწერეთ რეგულარული გამოსახულება, რომელიც იპოვის
შემდეგი შაბლონით: კიდეებზე დგას ასო
'a', ხოლო მათ შორის - ასო
'a'-დან 'g'-მდე.
მოცემულია სტრიქონი:
txt = 'aba aea afa aha aga'
დაწერეთ რეგულარული გამოსახულება, რომელიც იპოვის
შემდეგი შაბლონით: კიდეებზე დგას ასო
'a', ხოლო მათ შორის - ასო
'a'-დან 'f'-მდე და 'j'-დან
'z'-მდე.
მოცემულია სტრიქონი:
txt = 'aAa aea aEa aJa a3a'
დაწერეთ რეგულარული გამოსახულება, რომელიც იპოვის
შემდეგი შაბლონით: კიდეებზე დგას ასო
'a', ხოლო მათ შორის - ასო
'a'-დან 'f'-მდე და 'A'-დან
'D'-მდე.
მოცემულია სტრიქონი:
txt = 'aAXa aeffa aGha aza ax23a a3sSa'
დაწერეთ რეგულარული გამოსახულება, რომელიც იპოვის
შემდეგი შაბლონით: კიდეებზე დგას ასო
'a', ხოლო მათ შორის - პატარა
ლათინური ასოები, სხვების შეუხებლად.
მოცემულია სტრიქონი:
txt = 'aAXa aeffa aGha aza ax23a a3sSa'
დაწერეთ რეგულარული გამოსახულება, რომელიც იპოვის
შემდეგი შაბლონით: კიდეებზე დგას ასო
'a', ხოლო მათ შორის - პატარა და
დიდი ლათინური ასოები, სხვების შეუხებლად.
მოცემულია სტრიქონი:
txt = 'aAXa aeffa aGha aza ax23a a3sSa'
დაწერეთ რეგულარული გამოსახულება, რომელიც იპოვის
შემდეგი შაბლონით: კიდეებზე დგას ასო
'a', ხოლო მათ შორის - პატარა
ლათინური ასოები და ციფრები, სხვების შეუხებლად.