⊗pyPmRESF 73 of 129 menu

რეგულარული გამონათქვამების დროშები Python-ში

დროშების ერთ-ერთი არასავალდებულო პარამეტრის სახით მეთოდებისთვის, რომლებიც მუშაობენ რეგულარულ გამონათქვამებთან, გამოიყენება შემდეგი სინტაქსი:

flags=re.დროშის_სახელი

ძირითადი დროშები რეგულარულ გამონათქვამებთან მუშაობისთვის

დროშა დანიშნულება
re.IGNORECASE სიმბოლოების ასოს რეგისტრის იგნორირება.
re.DOTALL წერტილი აღნიშნავს ნებისმიერ სიმბოლოს, ხაზის გადატანის ჩათვლით.
re.I აქცევს ძიებას მგრძნობიარედ რეგისტრის მიმართ.
re.L ძიებს სიტყვებს მიმდინარე ენის შესაბამისად. ეს ინტერპრეტაცია ეხება ანბანურ ჯგუფს (\w და \W), ასევე სიტყვის საზღვრის ქცევას (\b და \B).
re.M სიმბოლო $ ასრულებს ძიებას ტექსტის ნებისმიერი ხაზის ბოლოს (არა მხოლოდ ტექსტის ბოლოს) და სიმბოლო ^ ასრულებს ძიებას ტექსტის ნებისმიერი ხაზის დასაწყისში (არა მხოლოდ ტექსტის დასაწყისში).
re.S ცვლის წერტილის (.) მნიშვნელობას ნებისმიერ სიმბოლოსთან დამთხვევაზე, ახალი ხაზის ჩათვლით.
re.U აღიქვამს ასოებს Unicode სიმბოლოების ნაკრების შესაბამისად. ეს დროშა გავლენას ახდენს \w, \W, \b, \B-ის ქცევაზე. Python 3+-ში ეს დროშა ნაგულისხმევად არის დაყენებული.
re.X იძლევა რეგულარული გამონათქვამის მრავალხაზიანი სინტაქსის საშუალებას. ის აიგნორებს შაბლონის შიგნით არსებულ სივრცეებს (გარდა სივრცეებისა, რომლებიც არიან ნაკრების შიგნით [] ან როდესაც ეკრანიზებულია უკანა ხაზით) და ამუშავებს არა ეკრანიზებულ '#'-ს როგორც კომენტარს.

მაგალითი

დროშის re.IGNORECASE საშუალებით შესაძლებელია სიმბოლოების რეგისტრის იგნორირება. მოდით ნახოთ, როგორ კეთდება ეს. ამ მაგალითში რეგულარული გამონათქვამი მოიძებნის მხოლოდ პატარა ასოებს:

txt = 'aaa bbb CCC DDD' res = re.sub('[a-z]+', '!', txt) print(res)

კოდის შესრულების შედეგი:

'! ! CCC DDD'

მაგალითი

ახლა კი მეთოდის მეოთხ პარამეტრში დავამატოთ დროშა re.IGNORECASE და რეგულარული გამონათქვამი დაიწყებს სიმბოლოების ძიებას ყველა რეგისტრში:

txt = 'aaa AAA bbb BBB' res = re.sub('[a-z]+', '!', txt, flags=re.IGNORECASE) print(res)

კოდის შესრულების შედეგი:

'! ! ! !'

მაგალითი

მოდით ვიპოვოთ რეგულარული გამონათქვამით ყველა ხაზის გადატანა:

txt = '''aaa bbb''' res = re.sub('\n', '!', txt) print(res)

შესრულებული კოდის შედეგი:

'aaa!bbb'

მაგალითი

მაგრამ, თუ საჭიროა ყველა სიმბოლოს ჩანაცვლება, მაშინ რეგულარულ გამონათქვამში წერტილის დაყენებით, ხაზის გადატანები არ ჩაიჭრება:

txt = '''aaa bbb''' res = re.sub('.', '!', txt) print(res)

შესრულებული კოდის შედეგი:

'!!! !!!'

მაგალითი

ამ შეცდომის გამოსასწორებლად, უნდა გამოვიყენოთ დროშა re.DOTALL:

res = re.sub('.', '!', txt, flags=re.DOTALL) print(res)

შესრულებული კოდის შედეგი:

'!!!!!!!'

მაგალითი

პარამეტრში შესაძლებელია რამდენიმე დროშის გადაცემაც, მათ შორის + ოპერატორის დაყენებით. მოდით ჯერ შევცვალოთ ასო 'a' ხაზის ბოლოს:

txt = ''' aaa AAA aaa''' res = re.sub('aaa$', '!', txt) print(res)

შესრულებული კოდის შედეგი:

''' aaa AAA ! '''

მაგალითი

ახლა დავაყენოთ დროშა re.M:

res = re.sub('aaa$', '!', txt, flags=re.M) print(res)

შესრულებული კოდის შედეგი:

''' ! AAA ! '''

მაგალითი

მოდით ახლა გამოვიყენოთ ასევე დროშა რეგისტრის იგნორირებისთვის:

res = re.sub('aaa$', '!', txt, flags=re.M+re.IGNORECASE) print(res)

შესრულებული კოდის შედეგი:

''' ! ! ! '''
ქართული
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語Қазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
ვებსაიტის მუშაობის, ანალიტიკისა და პერსონალიზაციისთვის ვიყენებთ ქუქი-ფაილებს. მონაცემთა დამუშავება ხდება Კონფიდენციალურობის პოლიტიკის შესაბამისად.
ყველას მიღება პარამეტრები უარყოფა