Ҷузъдоњои нигоҳ надоранда дар регуляриҳои Python
Ҷузъдоњо ( ) ду вазифаро иҷро мекунанд -
гурӯҳбандии аломатҳо ва вазифаи карман. Аммо
чӣ кор кардан лозим аст, агар гурӯҳбандӣ лозим бошад, аммо
ба карман гузоштан нахоҳад? Барои ҳалли чунин
машқулият ҷузъдоњои махсуси нигоҳ надоранда
(?: ) ихтироъ шудаанд - онҳо гурӯҳбандӣ мекунанд,
вале ба карман намегузоранд.
Намуна
Дар намунаи оянда ҷузъдоњои аввал барои мо заруранд барои гурӯҳбандӣ, ва дуввумӣ - барои карман. Аммо, ҳам онҳо, ва ҳам инҳо маълумотро нигоҳ медоранд дар карман:
txt = 'abab123'
res = re.search('(ab)+([1-9]+)', txt)
Дар натиҷа дар карманҳои мо хоҳад буд ҳамин:
print(res[0]) # 'abab123'-ро чоп мекунад
print(res[1]) # 'ab'-ро чоп мекунад
print(res[2]) # '123'-ро чоп мекунад
Намуна
Биёед то ҷузъдоњои ҷуфти аввал танҳо гурӯҳбандӣ кунанд, вале ба карман нагузоранд:
txt = 'abab123'
res = re.search('(?:ab)+([1-9]+)', txt)
Дар натиҷа дар кармани аввал хоҳад буд рақами мо:
print(res[1]) # '123'-ро чоп мекунад