⊗pyPmRELAB 72 of 129 menu

Python regular ifodalarida ijobiydan oldin va keyin qarash

Ba'zan quyidagi tipdagi masalani yechish kerak bo'ladi: 'aaa' satrini topish va uni '!' bilan almashtirish, lekin faqat 'aaa' dan keyin 'x' turgan holatdagina, 'x' ning o'zini esa almashtirmaslik. Agar biz bu masalani "boshidanoq" yechishga harakat qilsak, hech narsa chiqmaydi:

txt = 'aaax baaa' res = re.sub('aaax', '!', txt) print(res) # chiqadi '! baaa', lekin '!x baaa' ni xohlaymiz

Oldinga qarash

Masalani yechish uchun 'x' ni almashtirish shart emasligini aytish usuli kerak. Buning uchun (?= ) maxsus qavslari ishlatiladi, ular faqat qaraydi, lekin o'ziga olmaydi.

Bu qavslar ijobiydan oldin qarash deyiladi. Ijobiy - chunki 'x' (bizning holatimizda) bo'lishi kerak - shunda almashtirish amalga oshadi.

Keling, ushbu qavslarni masalamizni yechish uchun qo'llaymiz:

txt = 'aaax baaa' res = re.sub('aaa(?=x)', '!', txt) print(res) # chiqadi '!x aaab

Salbiydan oldin qarash ham mavjud - (?! ) - u, aksincha, biror narsa bo'lmasligi kerakligini bildiradi. Quyidagi misolda, almashtirish faqat 'aaa' dan keyin 'x' bo'lmaganda amalga oshadi:

txt = 'aaax aaab' res = re.sub('aaa(?!x)', '!', txt) print(res) # chiqadi 'aaax !b'

Orqaga qarash

Xuddi shunday, ijobiydan keyin qarash ham mavjud - (?<= ). Quyidagi misolda, almashtirish faqat 'aaa' dan oldin 'x' turganida amalga oshadi:

txt = 'xaaa' res = re.sub('(?<=x)aaa', '!', txt) print(res) # chiqadi 'x!'

Shuningdek, salbiydan keyin qarash ham mavjud - (?<! ). Quyidagi misolda, almashtirish faqat 'aaa' dan oldin 'x' bo'lmaganda amalga oshadi:

txt = 'baaa' res = re.sub('(?<!x)aaa', '!', txt) print(res) # chiqadi 'b!'

Amaliy masalalar

Funksiya nomlarini o'z ichiga olgan satr berilgan:

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

Satzdan funksiya nomlari massivini oling.

Teg bilan satr berilgan:

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

Ushbu tegning atribut nomlari massivini oling.

O'zgaruvchilar bilan satr berilgan:

txt = '$aaa $bbb $ccc xxxx'

Oldida dollar belgisi turgan pastki satrlarni oling.

Oʻzbek
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекTiếng Việt
Biz sayt ishlashi, tahlil qilish va shaxsiylashtirish uchun cookie-fayllardan foydalanamiz. Ma'lumotlarni qayta ishlash Maxfiylik siyosatiga muvofiq amalga oshiriladi.
hammasini qabul qilish sozlash rad etish