Behöver hjälp med en regexp (PHP)

Permalänk
Medlem

Behöver hjälp med en regexp (PHP)

Hej!

Jag har läst på för fullt men jag fattar ändå inte helt och fullt.
Antar att jag ska köra med preg_match.
"The preg_match() function performs Perl-style pattern matching on a string. preg_match() takes two basic and three optional parameters."

Jag behöver hjälp med en regexp som enbart träffar på följande:
XX.XXXXXXXXXXXX

X kan vara både bokstäver och siffror.
De två första före punkten får INTE vara 81.
Annars är det ok.

Tack på förhand!

Edit: Jag vill plocka ut enheterna på ett 1-wirenät.
Katalogstrukturen kan se ut så här:
10.0AEE9D000800
10.6A07B6010800
10.794DB6010800
10.9BED9E010800
10.EC949E010800
1D.61230D000000
20.5E0D14000000
81.07AC2A000000
alarm
bus.0
FF.830400000100
FF.B80400000100
settings
simultaneous
statistics
structure
system
uncached

Permalänk
Medlem

Använd PHP: explode - Manual istället. Mycket snabbare och enklare än regulära uttryck.

Permalänk
Medlem
Skrivet av Marwelln:

Använd PHP: explode - Manual istället. Mycket snabbare och enklare än regulära uttryck.

Jag förstår inte riktigt hur jag skulle kunna använda explode i det här fallet..

Permalänk
Medlem

Här är ett regexp som matchar det du vill:

[0-79A-Z][02-9A-Z]\.[0-9A-Z]{12}

. Det går förmodligen att göra mer obegripligt om man vill

Edit: Du kan iofs. ändra alla Z till F om du bara ska matcha hexadecimalt.

Permalänk
Medlem
Skrivet av perost:

Här är ett regexp som matchar det du vill:

[0-79A-Z][02-9A-Z]\.[0-9A-Z]{12}

. Det går förmodligen att göra mer obegripligt om man vill

Edit: Du kan iofs. ändra alla Z till F om du bara ska matcha hexadecimalt.

Jag ogillar regexp (för att jag inte fattar, hehe) och ja, det är hexadecimalt.

Som jag förstår så matchar 0-79A-Z INTE 8 över huvud taget? Skulle den tex matcha 8?
Tack!

Edit:
Ändrade till [0-79A-F][0-9A-Z]\.[0-9A-F]{12}
Då kan den matcha allt som inte börjar på 8 iaf.

Permalänk
Medlem

(?!81)[0-9A-F]{2}\.[0-9A-F]{12} kanske fungerar

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem
Skrivet av N!klas:

Jag hatar regexp och ja, det är hexadecimalt.

Som jag förstår så matchar 0-79A-Z INTE 8 över huvud taget? Skulle den tex matcha 8?
Tack!

Edit:
Ändrade till [0-79A-F][0-9A-Z]\.[0-9A-F]{12}
Då kan den matcha allt som inte börjar på 8 iaf.

Hoppsan, tänkte lite galet där. Min hjärna tolkade ditt inlägg som att första inte får vara 8 och andra inte 1 Teknocides lösning borde fungera.

Permalänk
Medlem
Skrivet av perost:

Hoppsan, tänkte lite galet där. Min hjärna tolkade ditt inlägg som att första inte får vara 8 och andra inte 1 Teknocides lösning borde fungera.

Hehe, nja, det var hela talet. Det får inte vara 81 (det är 1wireadaptern och den behöver inte vara med).

Teknocides tycks fungera.

Tack till er!