⊗pyPmRELAB 72 of 129 menu

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

ზოგჯერ საჭიროა ამ类型的 ამოცანის ამოხსნა: იპოვოთ სტრიქონი 'aaa' და შეცვალოთ იგი '!'-ით, მაგრამ მხოლოდ იმ შემთხვევაში, თუ 'aaa'-ის შემდეგ დგას 'x', თავად 'x' კი არ შეიცვალოს. თუ ჩვენ შევეცდებით ამოცანის ამოხსნას 'პირდაპირ', ჩვენ არაფერი გამოგვივა:

txt = 'aaax baaa' res = re.sub('aaax', '!', txt) print(res) # დაწერს '! baaa', მაგრამ გვინდოდა '!x baaa'

წინ ნახვა

ამოცანის ამოსახსნელად საჭიროა გზა, რომ ვთქვათ, რომ 'x' არ უნდა შეიცვალოს. ეს კეთდება სპეციალური ფრჩხილების (?= ) მეშვეობით, რომლებიც მხოლოდ უყურებენ, მაგრამ არ იღებენ თან.

ამ ფრჩხილებს ეწოდება პოზიტიური წინ ნახვა. პოზიტიური - რადგან 'x' (ჩვენს შემთხვევაში) უნდა იყოს - მხოლოდ მაშინ მოხდება ჩანაცვლება.

მოდით გამოვიყენოთ ეს ფრჩხილები ჩვენი ამოცანის ამოსახსნელად:

txt = 'aaax baaa' res = re.sub('aaa(?=x)', '!', txt) print(res) # დაწერს '!x aaab

არსებობს ნეგატიური წინ ნახვაც - (?! ) - ის, პირიქით, ამბობს, რომ რაღაც არ უნდა იყოს. შემდეგ მაგალითში, ჩანაცვლება მოხდება მხოლოდ იმ შემთხვევაში, თუ 'aaa'-ის შემდეგ არ დგას 'x':

txt = 'aaax aaab' res = re.sub('aaa(?!x)', '!', txt) print(res) # დაწერს 'aaax !b'

უკან ნახვა

ანალოგიურად არსებობს პოზიტიური უკან ნახვა - (?<= ). შემდეგ მაგალითში ჩანაცვლება მოხდება მხოლოდ იმ შემთხვევაში, თუ 'aaa'-ის წინ დგას 'x':

txt = 'xaaa' res = re.sub('(?<=x)aaa', '!', txt) print(res) # დაწერს 'x!'

და ასევე არსებობს ნეგატიური უკან ნახვაც - (?<! ). შემდეგ მაგალითში ჩანაცვლება მოხდება მხოლოდ იმ შემთხვევაში, თუ 'aaa'-ის წინ არ დგას 'x':

txt = 'baaa' res = re.sub('(?<!x)aaa', '!', txt) print(res) # დაწერს 'b!'

პრაქტიკული ამოცანები

მოცემულია სტრიქონი, რომელიც შეიცავს ფუნქციების სახელებს:

txt = 'func1() func2() func3()'

მიიღეთ ფუნქციების სახელების მასივი სტრიქონიდან.

მოცემულია სტრიქონი ტეგით:

txt = '<a href="" class="eee" id="zzz">'

მიიღეთ ამ ტეგის ატრიბუტების სახელების მასივი.

მოცემულია სტრიქონი ცვლადებით:

txt = '$aaa $bbb $ccc xxxx'

მიიღეთ ქვესტრიქონები, რომლების წინაც დგას დოლარის სიმბოლო.

ქართული
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
ვებსაიტის მუშაობის, ანალიტიკისა და პერსონალიზაციისთვის ვიყენებთ ქუქი-ფაილებს. მონაცემთა დამუშავება ხდება Კონფიდენციალურობის პოლიტიკის შესაბამისად.
ყველას მიღება პარამეტრები უარყოფა