Gå til innhold

Hjelp med regulært uttrykk


Anbefalte innlegg

Skrevet (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 av trrunde
Videoannonse
Annonse
Skrevet (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 av trrunde
Skrevet

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.

Skrevet

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.

Skrevet (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 av trrunde
Skrevet

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;
?> 

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...