Python Regular Ifodalaridagi Belgilar Guruhlari
Bir vaqtning o'zida butun belgilar guruhini
tanlash imkonini beruvchi maxsus buyruqlar
mavjud. \d buyrug'i 0 dan
9 gacha raqamni anglatadi.
\w buyrug'i raqam, lotin harfi yoki
tagi chizig'ini bildiradi. \s buyrug'i
boshliq yoki bo'shliq belgisini anglatadi: bo'shliq,
qator almashinuvi, tabulyatsiya.
Buyruqning ma'nosini inversiyalash mumkin,
katta harf yozish orqali:
masalan, agar \d - raqam bo'lsa,
\D - raqam emas.
Misol
Keling, barcha raqamlarni topamiz:
txt = '1 12 123'
res = re.sub('\d', '!', txt)
print(res)
Kodni bajarish natijasi:
'! !! !!!'
Misol
Takrorlash operatorlari buyruq-guruhlarni
bir butun deb hisoblaydi, ya'ni guruhlash
qavslari kerak emas. Quyidagi misolda qidiruv
andazasi shunday ko'rinadi: 0 dan
9 gacha raqam bir yoki bir necha marta:
txt = '1 12 123 abc @@@'
res = re.sub('\d+', '!', txt)
print(res)
Kodni bajarish natijasi:
'! ! ! abc @@@'
Misol
Quyidagi misolda qidiruv andazasi shunday
ko'rinadi: har qanday narsa bir yoki bir necha marta,
lekin 0 dan 9 gacha raqam emas:
txt = '123abc3@@'
res = re.sub('\D+', '!', txt)
print(res)
Kodni bajarish natijasi:
'123!3!'
Misol
Ushbu misolda qidiruv andazasi shunday ko'rinadi: bo'shliq belgisi bir marta:
txt = '1 12 123 abc @@@'
res = re.sub('\s', '!', txt)
print(res)
Kodni bajarish natijasi:
'1!12!123!abc!@@@'
Misol
Ushbu misolda qidiruv andazasi shunday
ko'rinadi: bo'shliq belgisi EMAS bir yoki bir necha
marta. Bo'shliqlar bilan ajratilgan
barcha qatorlar '!' ga almashtiriladi:
txt = '1 12 123 abc @@@'
res = re.sub('\S+', '!', txt)
print(res)
Kodni bajarish natijasi:
'! ! ! ! !'
Misol
Ushbu misolda qidiruv andazasi shunday
ko'rinadi: raqam yoki harf bir yoki bir necha
marta. Raqamlar va harflardan tashkil topgan
barcha qatorlar '!' ga almashtiriladi:
txt = '1 12 123a Abc @@@'
res = re.sub('\w+', '!', txt)
print(res)
Kodni bajarish natijasi:
'! ! ! ! @@@'
Misol
Ushbu misolda qidiruv andazasi shunday
ko'rinadi: raqam EMAS va harf EMAS bir yoki bir necha
marta. Bizning holatda bu ta'rifga
'@@@' va barcha bo'shliqlar
(ular ham raqam emas va harf emas)
tushadi.
E'tibor bering, oxirida bitta
'!' - unga oldida bo'shliq bilan
' @@@' qatori aylantirildi:
txt = '1 12 123 Abc @@@'
res = re.sub('\W+', '!', txt)
print(res)
Kodni bajarish natijasi:
'1!12!123!Abc!'
Amaliy vazifalar
Qator berilgan:
txt = 'a1a a2a a3a a4a a5a aba aca'
Regular ifoda yozing, u cheti 'a' harflari
bilan qoplangan va ularning orasida bitta raqam
bo'lgan qatorlarni topadi.
Qator berilgan:
txt = 'a1a a22a a333a a4444a a55555a aba aca'
Regular ifoda yozing, u cheti 'a' harflari
bilan qoplangan va ularning orasida har qanday miqdordagi raqam
bo'lgan qatorlarni topadi.
Qator berilgan:
txt = 'aa a1a a22a a333a a4444a a55555a aba aca'
Regular ifoda yozing, u cheti 'a' harflari
bilan qoplangan va ularning orasida har qanday miqdordagi raqam (shu
jumladan nol raqam, ya'ni
'aa' qatori) bo'lgan qatorlarni topadi.
Qator berilgan:
txt = 'avb a1b a2b a3b a4b a5b abb acb'
Quyidagi ko'rinishdagi qatorlarni topadigan regular ifoda yozing:
cheti 'a' va 'b' harflari
bilan qoplangan, va ularning orasida -
raqam emas va bo'shliq emas.
Qator berilgan:
txt = 'ave a#b a2b a$b a4b a5b a-b acb'
Quyidagi ko'rinishdagi qatorlarni topadigan regular ifoda yozing:
cheti 'a' va 'b' harflari
bilan qoplangan, va ularning orasida -
harf emas, raqam emas va bo'shliq emas.
Qator berilgan:
txt = 'ave a#a a2a a$a a4a a5a a-a aca'
Barcha bo'shliqlarni '!' ga almashtiradigan
regular ifoda yozing.