# HVORDAN HÅNDTERE RU-GRUPPER I PYTHON # (Forutsetter at du allerede er kjent med regulære uttrykk og findall-metoden) # Python leter etter treff gruppevis dersom det # regulære uttrykket inneholder flere grupper. import re # Uttrykket består av to grupper: (a) og (bc|cb). ru = r'(a)(bc|cb)' tekst = 'abc abd acb abc' # ^ ^ ^ # Uttrykket finner tre treff i teksten: 'abc', 'acb' og 'abc' # 'abd' gjenkjennes ikke fordi uttrykket ikke forventer noen 'd'. treff = re.findall(ru, tekst) # Vi ser av utskriften under at treffene kun er lagret gruppevis, # treff gjenkjent av hele uttrykket er ikke lagret. print('Opprinnelig:') for t in treff: print(t) # For å løse dette pakker vi inn hele uttrykket i en ny gruppe: # Legg merke til forskjellen mellom dette uttrykket og det forrige i linje 11! forbedret_ru = r'((a)(bc|cb))' nye_treff = re.findall(forbedret_ru, tekst) # Vi ser nå at treffene har en ekstra gruppe med det som gjenkjennes av # hele uttrykket, altså den nye gruppa vi definerte i uttrykket. print('\nForbedret:') for t in nye_treff: print(t) # Vi ser av utskriften over at treffet gjenkjent av hele uttrykket alltid ligger # helt først. Altså kan vi hente det ut ved å systematisk indeksere slik: print('\nHele uttrykket gjenkjenner:') for t in nye_treff: print(t[0])