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:

pythontxt = 'abab123'
res = re.search('(ab)+([1-9]+)', txt)

Natijada bizning karmonlarimizda quyidagilar bo'ladi:

pythonprint(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:

pythontxt = 'abab123'
res = re.search('(?:ab)+([1-9]+)', txt)

Natijada birinchi karmonda bizning raqamimiz bo'ladi:

pythonprint(res[1]) # '123' chiqadi