Pythondagi muntazam ifodalarda saqlamaydigan qavslar
Qavslar ( ) ikkita funktsiyani bajaradi -
belgilarni guruhlash va "karmon" funktsiyasi. Ammo
guruhlash kerak, lekin
karmonga qo'ymasangiz nima qilish kerak? Bunday
muammoni hal qilish uchun maxsus saqlamaydigan
qavslar (?: ) ixtiro qilindi - ular guruhlaydi,
lekin karmonga qo'ymaydi.
Misol
Quyidagi misolda birinchi qavslar bizga guruhlash uchun kerak, ikkinchilari esa karmon uchun. Biroq, ikkala qavs ham ma'lumotlarni karmonga saqlaydi:
txt = 'abab123'
res = re.search('(ab)+([1-9]+)', txt)
Natijada bizning karmonlarimizda quyidagilar bo'ladi:
print(res[0]) # 'abab123' chiqadi
print(res[1]) # 'ab' chiqadi
print(res[2]) # '123' chiqadi
Misol
Keling, birinchi qavs juftligi faqat guruhlash uchun xizmat qiladigan, lekin karmonga qo'ymaydigan qilaylik:
txt = 'abab123'
res = re.search('(?:ab)+([1-9]+)', txt)
Natijada birinchi karmonda bizning raqamimiz bo'ladi:
print(res[1]) # '123' chiqadi