### Regulære uttrykk # Først må vi importere pakken for regulære uttrykk, som heter re # Dette gjør vi øverst i fila vår import re # Vi har nå tilgang på en rekke nye metoder! tekst = "Kari Nordmann studerer på IFI, Institutt for Informatikk, og er der hver uke fra mandag til fredag. Spesielt lenge er hun der på mandag fordi hun har en oblig den kvelden. Bygget ligger i Gastaudalléen 23B." # Henter alle ord som begynner med en stor bokstav og har minst en: regulært_uttrykk = r"[A-Z][a-z]+" # r'en foran strengen betyr at vi lagrer strengen som en "råstreng" (raw string). # Dere kan undersøke disse selv hvis dere vil, men det anbefales å gjøre det sånn for regulære uttrykk. # Med re.findall() kan vi finne matcher i teksten vår liste_med_matcher = re.findall(regulært_uttrykk, tekst) print("Liste med matcher:", liste_med_matcher) # re.split() fungerer ganske likt den vanlige .split(), men her kan vi bruke et regulært uttrykk i stedet for en vanlig streng splitta_tekst = re.split(regulært_uttrykk, tekst) print("Liste splitta på matcher:", splitta_tekst) # Med re.sub() bytter vi alle treff på det regulære uttrykket med den spesififiserte teksten streng_med_bytte = re.sub(regulært_uttrykk, "BYTTE", tekst) print("Streng med matcher bytta ut:", streng_med_bytte) # Nå vil vi ekstrahere ukedagene i teksten: ukedager = r"(man|fre)(dag)?" """ Siden vi bruker flere grupper, får vi litt rare resultater, der hver match er fordelt i 'tupler'. For å unngå dette, endrer vi uttrykket til å bli en 'non-capturing group' med '?:' i hver gruppe. Prøv å bruke begge versjoner for å se forskjellen! """ ukedager = r"(?:man|fre)(?:dag)" ukedager_tokens = re.findall(ukedager, tekst) print(ukedager_tokens) # Til slutt, vil vi ekstrahere adressen i teksten: adresse = r"[A-Z][a-zé]+\s[0-9]{2}[A-Z]" adresse_tokens = re.findall(adresse, tekst) print("Adressene vi fant:", adresse_tokens)