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