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:
txt = 'abab123'
res = re.search('(ab)+([1-9]+)', txt)
Nəticədə qruplarımızda aşağıdakılar olacaq:
print(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:
txt = 'abab123'
res = re.search('(?:ab)+([1-9]+)', txt)
Nəticədə birinci qrupda bizim rəqəmlərimiz olacaq:
print(res[1]) # çap edəcək '123'