# 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) # En løsning er å bruke metoden join() på en tom streng for hvert treff: print('\nMed join():') for t in treff: print(''.join(t)) # Dette blir dog tungvindt fordi det må gjøres for hvert treff. # En mer effektiv løsning er å bruke "non-capturing group" # Dette gjør man ved å starte hver gruppe med "?:". ru = r'(?:a)(?:bc|cb)' treff = re.findall(ru, tekst) print('\nMed "non-capturing group":') for t in treff: print(t)