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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...