⊗pyPmREESCh 36 of 129 menu

Python Regular Ifodalarda Maxsus Belgilarni Ekranlash

Faraz qilaylik, maxsus belgi o‘zini o‘zi anglatishi kerak. Buning uchun uni teskari chiziq yordamida ekranlash kerak. Keling, misollar orqali ko‘rib chiqaylik.

Misol

Quyidagi misolda regular ifoda muallifi qidiruv shabloni harf 'a', keyin plus '+', keyin harf 'x' ko‘rinishida bo‘lishini istagan. Biroq, kod muallifi '+' belgisini ekranlamagan va shuning uchun qidiruv shabloni aslida harf 'a' bir yoki bir necha marta, keyin harf 'x' ko‘rinishida:

txt = 'a+x ax aax aaax' res = re.sub('a+x', '!', txt) print(res)

Kodni bajarish natijasi:

'a+x ! ! !'

Misol

Endi esa muallif plusni teskari chiziq bilan ekranladi. Endi qidiruv shabloni kerakli ko‘rinishga ega: harf 'a', keyin plus '+', keyin harf 'x':

txt = 'a+x ax aax aaax' res = re.sub('a\+x', '!', txt) print(res)

Kodni bajarish natijasi:

'! ax aax aaax'

Misol

Ushbu misolda shablon quyidagi ko‘rinishga ega: harf 'a', keyin nuqta '.', keyin harf 'x':

txt = 'a.x abx azx' res = re.sub('a\.x', '!', txt) print(res)

Kodni bajarish natijasi:

'! abx azx'

Misol

Quyidagi misolda muallif nuqtani ekranlashni unutgan va regular ifoda barcha pastki qatorlarni qamrab olgan, chunki ekranlanmagan nuqta har qanday belgini anglatadi:

txt = 'a.x abx azx' res = re.sub('a.x', '!', txt) print(res)

Kodni bajarish natijasi:

'! ! !'

Eslatma

E'tibor bering, agar siz nuqta uchun teskari chiziqni unutsangiz (u o‘zini o‘zi anglatishi kerak bo‘lganida) - buni sezish ham qiyin bo‘lishi mumkin:

res = re.sub('a.x', '!', 'a.x') print(res) # '!' ni qaytaradi, xuddi biz xohlagandek

Vizual jihatdan to‘g‘ri ishlaydi (chunki nuqta har qanday belgini, shu jumladan oddiy nuqta '.' ni ham anglatadi). Lekin agar almashtirishlar amalga oshiriladigan qatorni o‘zgartirsak - xatolikni ko‘ramiz:

res = re.sub('a.x', '!', 'a.x abx azx') print(res) # '! ! !' ni qaytaradi, kutilyotgan natija '! abx azx' edi

Maxsus va oddiy belgilar ro‘yxati

Agar oddiy belgini ekranlasangiz - hech qanday yomon narsa bo‘lmaydi - u baribir o‘zini anglatadi. Istisno - raqamlar, ularni ekranlab bo‘lmaydi.

Ko‘pincha, ma'lum bir belgi maxsus yoki yo‘qmi degan shubha paydo bo‘ladi. Ba'zilar barcha shubhali belgilarni ketma-ket ekranlashgacha borishadi. Biroq, bu yomon amaliyotdir (regular ifodani teskari chiziqlar bilan to‘ldiradi).

Maxsus belgilar: $ ^ . * + ? \ / {} [] () |

Maxsus belgilar emas: @ : , ' " - _ = < > % # ~ `& !

Amaliy vazifalar

Berilgan qator:

txt = 'a.a aba aea'

'a.a' qatorini topadigan, qolganlarini qamramaydigan regular ifoda yozing.

Berilgan qator:

txt = '2+3 223 2223'

'2+3' qatorini topadigan, qolganlarini qamramaydigan regular ifoda yozing.

Berilgan qator:

txt = '23 2+3 2++3 2+++3 345 567'

'2+3', '2++3', '2+++3' qatorlarini topadigan, qolganlarini qamramaydigan regular ifoda yozing (+ har qanday miqdorda bo‘lishi mumkin).

Berilgan qator:

txt = '23 2+3 2++3 2+++3 445 677'

'23', '2+3', '2++3', '2+++3' qatorlarini topadigan, qolganlarini qamramaydigan regular ifoda yozing.

Berilgan qator:

txt = '*+ *q+ *qq+ *qqq+ *qqq qqq+'

'*q+', '*qq+', '*qqq+' qatorlarini topadigan, qolganlarini qamramaydigan regular ifoda yozing.

Berilgan qator:

txt = '[abc] {abc} abc (abc) [abc]'

Qavs ichidagi qatorlarni topadigan va ularni '!' ga almashtiradigan regular ifoda yozing.

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