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