trrunde Skrevet 27. mars 2011 Del Skrevet 27. mars 2011 (endret) Har ikke fått helt dreisen på regulære uttrykk enda, trenger hjelp med å lage en funksjon som som finner følgende kombinasjon av bokstaver/tall: GTD-123-12345 SDGE-123-12345 går det an å lage en funskon som matcher på 3/4 bokstaver en "-" 3 tall en ekstra "-" og 5 nye tall? edit: Vil gjerne hente ut verdien av bokstav/tallkombinasjon ikke bare true/false Endret 27. mars 2011 av trrunde Lenke til kommentar
trrunde Skrevet 27. mars 2011 Forfatter Del Skrevet 27. mars 2011 (endret) litt googling og det ser ut som jeg skal bruke funksjonen preg_match() Noen som kan hjelpe meg å finne ut når følgende regulære uttryk matcher med denne? @\[([A-Za-z0-9_ ]{1,100}) (\#|~|!)([A-Za-z]{3}-[0-9]{3}-[0-9]{5,6})\]@ Har jeg rett hvis jeg gjetter at denne matcher på store/små bokstaver eller tall 0-9 + akkuratt 3 tall deretter 5/6 tall? hva betyr dette? (\#|~|!) Endret 27. mars 2011 av trrunde Lenke til kommentar
trrunde Skrevet 27. mars 2011 Forfatter Del Skrevet 27. mars 2011 (endret) Har testet litt med denne: http://www.nvcc.edu/...test_regexp.asp fant da ut at dersom jeg brukte dette requlære uttrykket fikk jeg returnert true ([A-Za-z]{3,4}-[0-9]{3}-[0-9]{5}) hmm dette uttrykket ga også true på denne: ABCefgdfgD-123-12345 Endret 27. mars 2011 av trrunde Lenke til kommentar
Ernie Skrevet 27. mars 2011 Del Skrevet 27. mars 2011 Ja, det er fordi den finner ut at dfgD-123-12345 passer inn. Det du sannsynligvis ønsker er at hele skal passe, og da må du bruke ^ og $ for å angi at det må henholdsvis starte og slutte på det regulære uttrykket. Lenke til kommentar
trrunde Skrevet 27. mars 2011 Forfatter Del Skrevet 27. mars 2011 Ikke helt, der jeg tenker å benytte meg av dette er et helpdesk system (fusion 4 fra kayako) Her mottar vi endel eposter men har sett at det skjer ganske ofte at at svar på en ticket ikke blir registrert som et svar og heller blir en ny ticket. Jeg tenkte å bruke preg_match mot subject feltet i eposten for å hente ut eventuell eksisterende ticket id, så da kan emne se slik ut: sv: Jeg trenger hjelp!! #grh-123-12345 Da vil jeg hente ut grh-123-12345 slik at eposten blir registrert som et svar på en eksisterende ticket. Lenke til kommentar
Ernie Skrevet 27. mars 2011 Del Skrevet 27. mars 2011 Isåfall må du legge til at den skal matche #, men ikke hente den ut hvis du ikke trenger den. Lenke til kommentar
trrunde Skrevet 27. mars 2011 Forfatter Del Skrevet 27. mars 2011 (endret) Fikk nettop løst problemet, gikk igjennom den eksisterende koden for å hente ticket id, fant da ut at der sto matchet den på #ABC-123-12345 eller #ABC-123-123456 Endret denne slik at den matchet dette heller: #ABC-123-12345 eller #ABCD-123-12345 } else if (preg_match('@\[(\#|~|!)([A-Za-z]{3,4}-[0-9]{3}-[0-9]{5,6})\]@', $_subject, $_result) && $this->Settings->Get('t_eticketid') == 'random') { Edit ser nå at den også ser etter [ i starten og en ] på slutten, men hva betyr "@" som står på begge sider? Endret 27. mars 2011 av trrunde Lenke til kommentar
snippsat Skrevet 27. mars 2011 Del Skrevet 27. mars 2011 I python som er språket mitt. import re text = ''' GT-123-12345 GTD-123-12345 SDGE-123-12345 SDGEL-123-12345 ''' find_text = re.findall(r'(?m)^\w{3,4}-\d{3}-\d{5,6}$', text) print find_text """Output--> ['GTD-123-12345', 'SDGE-123-12345'] """ Må slite litt mere med PHP ettersom jeg ikke bruker PHP så mye. Denne ser ut til og fungere greit. <?php $string = "GTDD-123-12345"; if (preg_match('/^\w{3,4}-\d{3}-\d{5,6}$/m', $string, $regs)) { $result = $regs[0]; } else { $result = "No match"; } echo $result; ?> Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå