""" -- Løsningsforslag for oppgave 2.1 uke 4 -- """ # Først importerer vi biblioteket vi trenger for å søke med regulære uttrykk. import re liste = ["mandag 6/12", "tirsdag 30/5", "onsdag 36/12", "torsdag 25/14", "januar 01/01", "lørdag 1/5", "søndag 07/07"] # Vi lager det regulære uttrykket som matcher alle gyldige datoer (ukedager, ikke måneder). # Vi bruker '\b' før og etter uttrykket for å spesifisere 'word boundaries'. # Dette forteller hvor en dato starter og slutter. # 'r' står for 'raw', og forteller at vi vil søke i rå, uprossesert tekst. ru = r'\b(man|tirs|ons|tors|fre|lør|søn)dag\s(0[1-9]|[1-9]|[12][0-9]|3[01])\/(0[1-9]|[0-9]|1[012])\b' # Fordi datoene våre står i en liste, er det lettest å bruke re.search()' fremfor re.findall(), siden # re.search() returnerer det første treffet den finner. Da kan vi itere gjennom lista og bruke # re.search() på hvert element. # re.search() returnerer 'None' for hver gang et element ikke stemmer med regexen. Derfor bruker vi en if-sjekk # inne i løkka, for å sjekke om elementet er et treff. Så legger vi til resultatene i en liste, og skriver det ut. # group() gir tilbake selve strengene, og ikke hele match-objektet. matches = [] for dato in liste: treff = re.search(ru, dato) if treff: matches.append(treff.group()) print(matches)