Python-da Regulyar Ifadələrdə Qeyri-saxlayan Mötərizələr

Mötərizələr ( ) iki funksiya yerinə yetirir - simvolların qruplaşdırılması və qrup (capture) funksiyası. Bəs qruplaşdırmaq lazımdır, amma qrupa salmaq lazım deyilsə? Belə problemi həll etmək üçün xüsusi qeyri-saxlayan mötərizələr (?: ) icad edilmişdir - onlar qruplaşdırır, amma qrupa salmır.

Nümunə

Aşağıdakı nümunədə birinci mötərizələr bizə qruplaşdırmaq üçün lazımdır, ikinciləri isə - qrup üçün. Lakin, hər iki mötərizə məlumatı qrupa saxlayır:

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

Nəticədə qruplarımızda aşağıdakılar olacaq:

pythonprint(res[0]) # çap edəcək 'abab123'
print(res[1]) # çap edəcək 'ab'
print(res[2]) # çap edəcək '123'

Nümunə

Gəlin elə edək ki, birinci cüt mötərizə yalnız qruplaşdırsın, amma qrupa salmasın:

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

Nəticədə birinci qrupda bizim rəqəmlərimiz olacaq:

pythonprint(res[1]) # çap edəcək '123'