Python regular ifadelerinde saklamayan ýaýlary
Ýaýlar ( ) iki wezipäni ýerine ýetirýär -
nyşanlary toparlaşdyrmak we karman wezipesi. Eger
toparlaşdyrmak zerur, ýöne karmana goýmaly däl bolsa?
Beýle bir meseleni çözmek üçin aýratyn saklamayan
ýaýlar (?: ) oýlanyp tapyldy - olar toparlaşdyrýar,
ýöne karmana goýmaz.
Mysal
Aşakdaky mysalda birinji ýaýlar biz üçin toparlaşdyrmak üçin zerur, ikinjileri bolsa karman üçin. Ýöne, her iki ýaýlar hem maglumatlary karmana saklaýar:
txt = 'abab123'
res = re.search('(ab)+([1-9]+)', txt)
Netijede biziň karmanlarymyzda aşakdakylar bolar:
print(res[0]) # 'abab123' çykarar
print(res[1]) # 'ab' çykarar
print(res[2]) # '123' çykarar
Mysal
Indi birinji ýaý çübüniň diňe toparlaşdyryp, ýöne karmana goýmaz ýaly edeliň:
txt = 'abab123'
res = re.search('(?:ab)+([1-9]+)', txt)
Netijede birinji karmanda biziň sanymyz bolar:
print(res[1]) # '123' çykarar