რეგულარული გამონათქვამების შესავალი Python-ში
რეგულარული გამონათქვამები არის ბრძანებები რთული ძიებისა და ჩანაცვლებისთვის (ან უბრალოდ ძიებისთვის). ისინი საშუალებას გაძლევთ გააკეთოთ ძალიან საინტერესო რამ, მაგრამ, სამწუხაროდ, საკმაოდ რთულია ათვისებაში.
რეგულარულ გამონათქვამებთან მუშაობის დასაწყებად
Python-ში, ჩვენ გვჭირდება სპეციალური
მოდულის re იმპორტი:
import re
მოდული re მოიცავს მეთოდებს,
რომლებიც განკუთვნილია რეგულარულ
გამონათქვამებთან მუშაობისთვის. რეგულარული გამონათქვამი
წარმოადგენს ბრძანებების ერთობლიობას და შედგება
ორი ტიპის სიმბოლოსგან: იმ სიმბოლოებისგან, რომლებიც
თავისთავად აღნიშნავენ საკუთარ თავს და იმ სიმბოლოებისგან, რომლებიც არის ბრძანებები,
და რომლებსაც ეწოდება სპეციალური სიმბოლოები.
გაცნობა რეგულარულ გამონათქვამებთან უკეთესია
დავიწყოთ მეთოდის sub მაგალითზე, რომელიც
გამოიყენება ჩანაცვლებისთვის სტრიქონში. პირველ
პარამეტრად მეთოდი იღებს რა უნდა შეიცვალოს,
მეორე პარამეტრად - რაზე უნდა შეიცვალოს. მესამე პარამეტრში
მივუთითებთ სტრიქონს, რომელშიც საჭიროა
ჩანაცვლების გაკეთება. მეოთხე არასავალდებულო პარამეტრში
ვაყენებთ ჩანაცვლებების რაოდენობას. ყველაზე მარტივი
ჩანაცვლება ამ მეთოდის გამოყენებით
ასე გამოიყურება:
res = re.sub('a', '!', 'bab')
print(res) # დააბრუნებს 'b!b'
როგორც შეამჩნიეთ, რეგულარულ გამონათქვამში
ასოები აღნიშნავენ საკუთარ თავს. იგივე
ეხება ციფრებსაც. მოდით, ციფრი
2 შევცვალოთ !-ით:
res = re.sub('2', '!', '12abc3')
print(res) # დააბრუნებს '1!abc3'
წერტილი კი სპეციალური სიმბოლოა
და აღნიშნავს ნებისმიერ სიმბოლოს. შემდეგ
მაგალითში მოდით ვიპოვოთ ქვესტრიქონი ასეთი
შაბლონით: ასო 'x', შემდეგ ნებისმიერი
სიმბოლო, შემდეგ ისევ ასო 'x':
res = re.sub('x.x', '!', 'xax eee')
print(res) # დააბრუნებს '! eee'
მოცემულია სტრიქონი:
txt = 'ahb acb aeb aeeb adcb axeb'
დაწერეთ რეგულარული გამონათქვამი, რომელიც იპოვის სტრიქონებს
'ahb', 'acb', 'aeb'
შაბლონის მიხედვით: ასო 'a', ნებისმიერი
სიმბოლო, ასო 'b'.
მოცემულია სტრიქონი:
txt = 'aba aca aea abba adca abea'
დაწერეთ რეგულარული გამონათქვამი, რომელიც იპოვის სტრიქონებს
'abba', 'adca', 'abea'
შაბლონის მიხედვით: ასო 'a', 2
ნებისმიერი სიმბოლო, ასო 'a'.
მოცემულია სტრიქონი:
txt = 'aba aca aea abba adca abea'
დაწერეთ რეგულარული გამონათქვამი, რომელიც იპოვის სტრიქონებს
'abba' და 'abea', არ დაიჭიროს
'adca'.