Niet-bewarende haakjes in Python regex
Haakjes ( ) vervullen twee functies -
het groeperen van karakters en de functie van een capture group (geheugen). Maar
wat moet je doen als je moet groeperen, maar
niet in de capture group wilt plaatsen? Om dit probleem
op te lossen zijn speciale niet-bewarende
haakjes (?: ) bedacht - ze groeperen,
maar plaatsen niet in de capture group.
Voorbeeld
In het volgende voorbeeld hebben we de eerste haakjes nodig voor groepering, en de tweede - voor de capture group. Echter, beide soorten haakjes bewaren gegevens in de capture group:
txt = 'abab123'
res = re.search('(ab)+([1-9]+)', txt)
Als resultaat zullen we in onze capture groups het volgende hebben:
print(res[0]) # geeft 'abab123' weer
print(res[1]) # geeft 'ab' weer
print(res[2]) # geeft '123' weer
Voorbeeld
Laten we ervoor zorgen dat het eerste paar haakjes alleen groepeert, maar niet in de capture group plaatst:
txt = 'abab123'
res = re.search('(?:ab)+([1-9]+)', txt)
Als resultaat zal in de eerste capture group ons getal staan:
print(res[1]) # geeft '123' weer