mult = (date / any)+
date = pre (leap_date / date_in / date_swe) post
leap_date = ("29 februari " leap_year) / (leap_year "-02-29")
date_swe = swe_num / swe_text
swe_text = ((thirtyone " " mon31_text) / (thirty " " mon30_text) / (twenty8 " februari")) " " year
swe_num = ((thirty "/" mon30_num) / (thirtyone "/" mon31_num) / (twenty8 "/2")) " " year
date_in = year "-" ((mon31_num0 "-" thirtyone0) / (mon30_num0 "-" thirty0) / ("02-" twenty80))
thirtyone = ~"[1-2][0-9]|3[0-1]|[1-9]"
thirty = ~"[1-2][0-9]|30|[1-9]"
thirtyone0 = ~"0[1-9]|[1-2][0-9]|3[0-1]"
thirty0 = ~"0[1-9]|[1-2][0-9]|30"
twenty8 = ~"1[0-9]|2[0-8]|[1-9]"
twenty80 = ~"0[1-9]|1[0-9]|2[0-8]"
year = ~"(19|20)[0-9]{2}"
leap_year = ~"19(0[48]|[2468][048]|[13579][26])|20([02468][048]|[13579][26])"
mon31_num0 = ~r"0[13578]|1[02]"
mon30_num0 = ~r"0[469]|11"
mon31_num = ~r"1[02]|[13578]"
mon30_num = ~r"11|[469]"
mon31_text = "januari" / "mars" / "maj" / "juli" / "augusti" / "oktober" / "december"
mon30_text = "april" / "juni" / "september" / "november"

any = ~r"(.|\s)+?(?=((?<=[\s\"\”(])|^).)" / ~r"(.|\s)+"
pre = ~r"((?<=[\s\"\”(])|^)"
post = ~r"(?=(([.,\"\”])|\),?)\s|\s|$)"
space = " "
dash = "-"
zero = "0"
one = "1"
onetotwo = ~"[1-2]"
onetonine = ~"[1-9]"
digit = ~"[0-9]"
num = twofifty / twohun / hun / tens
twofifty = ~"25[0-5]"
twohun = ~"2[0-4][0-9]"
hun = one digit{2}
tens = ~"[1-9]?[0-9]"
blocks = ~r"/(0|[1-9][0-9]?)"
ipv4_raw = (num "."){3} num blocks?

