1. Introduktion #
Regular expressions er en streng, som beskriver et søgemønster, man kan bruge i rigtig mange tilfælde. Disse kan bruges til hurtigt, at finde hvad man søger, i en eksempelvis en tekst eller selector. I tilfælde med tekst kan det nogle gange være nemmere, at lave flere små regex som præcisere variablen hver gang, frem for at lave en lang kompliceret expression.
Navn | Note | Link |
Kursus | Gratis kursus med opgaver til regex | https://regexone.com/ |
Tester | Testværktøj, hvor man kan teste sine regex mod sine data den leder i | http://regexstorm.net/tester |
Cheatsheet | Hurtig reference ark til regex | https://www.cheatography.com/davechild/cheat-sheets/regular-expressions/ |
1.1 Nyttige expressions #
Beskrivelse | Expression |
Almindelige tidsformater 00:00:00 og lignende | (?:(?:([01]?\d|2[0-3]):)?([0-5]?\d):)?([0-5]?\d)(?:[000-999]) |
Fang valuta i forskellige formater, DK 1.200,36 | USA 1,200.36 | \-?\d+[\.\,\d]* |
Til email adresser | (?:[a-z0-9!#$%&’*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&’*+/=?^_`{|}~-]+)*|”(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*”)@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\.){3}(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9])|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\]) |
Til at matche på linjeskift | [\r\n]+ |
Case insensitive | (?i)Match(?-i) |
Hent filnavn fra sti uden filtype | [ \w-]+?(?=\.) |
Søg efter teksts, og hent teksten ud på linjen herunder | (?<=Søgeord[\s\r\n]+.*)([^\r\n]+) |
Søg efter tekst, og hiv tekst ud bagved dette | (?<=Søgeord +.*)([a-zA-Z0-9\.\s]+) |
Søg efter tekst, og hiv kun tal ud bagved dette, inkl punktum og komma | (?<=Søgeord .*)\-?\d+[\.\,\d]* |
Match op til en stopklods, eksempelvis komma | ^[^,]* |
2. Eksempler #
Dette eksempel kan søge efter noget specifikt 6057 i det her tilfælde, og trækker det første beløb ud der kommer efter denne.
(?<=6057.*)\-?\d+[\.\,\d]*
Et output fra KMD Aktiv hvor vi eksempelvis gerne vil have CPR-numrene ud.
Regex = \d{6}-\d{4}
Man kan også søge efter noget specifikt, og kun tage kopiere den tekst ud der står bagved via (?<=SØGEORDHER.*)
Herved kan man eventuelt hente noget ud, og lave en ny parse text med dens output med en ny regular expression, frem for at lave en kompliceret expression. Man kan i den næste del af eksemplet her lave endnu en Parse Text hvor man vil bruge (?<=af.*)\S\d* som hiver tallet ud som kommer efter af teksten.