Kllapat mosruajtëse në regex Python
Kllapat ( ) kryejnë dy funksione -
grupimin e karaktereve dhe funksionin e grupit (capturing). Po
çfarë duhet bërë nëse duhet grupuar, por
të mos ruhet në grup? Për zgjidhjen e një problemi të tillë
janë shpikur kllapat mosruajtëse (?: ) - ato grupojnë,
por nuk e vendosin në grup.
Shembull
Në shembullin vijues kllapat e para na duhen për grupim, kurse të dytat - për grup (capturing). Megjithatë, të dy llojet e kllapave ruajnë të dhënat në grup:
txt = 'abab123'
res = re.search('(ab)+([1-9]+)', txt)
Si rezultat në grupet tona do të ketë poshtëshkruar:
print(res[0]) # do të shfaqë 'abab123'
print(res[1]) # do të shfaqë 'ab'
print(res[2]) # do të shfaqë '123'
Shembull
Le t'i bëjmë që çifti i parë i kllapave të grupojë vetëm, por të mos ruajë në grup:
txt = 'abab123'
res = re.search('(?:ab)+([1-9]+)', txt)
Si rezultat në grupin e parë do të jetë numri ynë:
print(res[1]) # do të shfaqë '123'