Gå til innhold

Hjelp med regulært uttrykk


Anbefalte innlegg

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 av trrunde
Lenke til kommentar
Videoannonse
Annonse

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 av trrunde
Lenke til kommentar

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

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 av trrunde
Lenke til kommentar

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

Bli med i samtalen

Du kan publisere innhold nå og registrere deg senere. Hvis du har en konto, logg inn nå for å poste med kontoen din.

Gjest
Skriv svar til emnet...

×   Du har limt inn tekst med formatering.   Lim inn uten formatering i stedet

  Du kan kun bruke opp til 75 smilefjes.

×   Lenken din har blitt bygget inn på siden automatisk.   Vis som en ordinær lenke i stedet

×   Tidligere tekst har blitt gjenopprettet.   Tøm tekstverktøy

×   Du kan ikke lime inn bilder direkte. Last opp eller legg inn bilder fra URL.

Laster...
×
×
  • Opprett ny...