# 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])