Neohranjevalni oklepaji v regularnih izrazih Python
Oklepaji ( ) izvajajo dve funkciji -
grupiranje znakov in funkcijo captured group (zajema skupine). A
kaj narediti, če je treba združiti, vendar
ne shraniti v captured group? Za rešitev takšnega
problema so bili izumljeni posebni neohranjevalni
oklepaji (?: ) - ti združujejo,
vendar ne shranijo v captured group.
Primer
V naslednjem primeru so prvi oklepaji potrebni za grupiranje, drugi pa za captured group. Vendar pa tako eni kot drugi oklepaji shranjujejo podatke v captured group:
txt = 'abab123'
res = re.search('(ab)+([1-9]+)', txt)
Kot rezultat bo v naših captured groupih (skupinah) naslednje:
print(res[0]) # izpiše 'abab123'
print(res[1]) # izpiše 'ab'
print(res[2]) # izpiše '123'
Primer
Naredimo tako, da bo prvi par oklepajev samo združeval, ne pa tudi shranjeval v captured group:
txt = 'abab123'
res = re.search('(?:ab)+([1-9]+)', txt)
Kot rezultat bo v našem prvem captured groupu naše število:
print(res[1]) # izpiše '123'