ugrás a tartalomhoz

Regexp kifejezés megtalálása

carstepD · 2008. Jan. 28. (H), 11.19
Üdv Mindenkinek,

olyan kéréssel fordulok hozzátok, hogy van egy Helpdesk szoftver (Cerberus), amelyben a parsolt e-mailek tárgyára szeretnék reguláris kifejezést írni a szpamek szűrőn fennakadt levelek előszűrésére.

van egy levél tárgy minta: #LOX-12312-232
,amelyre szűrni szeretnék, de akárhogy állítom be a reguláris kifejezést (tov. regexp) 1xűen nem csinálja meg.

Az általam megállapított regexp a következő:

\#{1,1}([A..Z]{3,3}\-\d{5,5}\-\d{3,3})

Több internetes regexp tesztelőt megnéztem és mindig visszaadják a teljes szöveg eredményét. És ezt nem tudom mire vélni. Még nem nagyon csináltam regexp-eket, ezért is kérem tanácsotokat.

Ha van öteltetek, nyugodtan mondjátok?

köszi Sanyi
 
1

röviden

razielanarki · 2008. Jan. 28. (H), 12.40
- nem kell backslash-sel escapelned a # és - karaktereket, mivel nem speciálisak (a - csak []-n belül az)
- az {x,y} kvantor, ha x=y rövidíthető {x}-re ( {3,3} -> {3} )
- nincs szükség az {1,1}-re sem, hiszen ez az "alapértelmezett", hogy amit beírsz az csak egyszer forduljon elő
- valamint az [A..Z] tartomány szintaxisa helyesen [A-Z] (a . "bármilyen karakter"-t jelöl)

végül valami ilyesmi marad:
preg_match ("/#([A-Z]{3}-\d{5}-\d{3})/", $level_targy);
és ha ajánlhatok egy jó tesztert: regexpal, a színkiemelés segíthet jobban megérteni a regexpeket
4

köszönöm

carstepD · 2008. Jan. 28. (H), 15.27
köszi a választ, az A..Z az tényleg hibás, csak még nagyon benne vagyok egy másik programozási nyelvben is, ahol így használják a case halmazra való szűkítését :), ami nagyon benne van az ujjamban!!

ü. sanyi

UI.: valamikor régen én is láttam ezt az oldalt, és fel is vettem a hasznos linkek közé, de valahogy elveszett, most újra felveszem!!!
2

De milyen?

vbence · 2008. Jan. 28. (H), 12.43
Milyen regex dialektusban kell írni? Amit a böngésző javascriptje megfejt az semmiben sem garantája azt, hogy a te implementációd is megérti.

Én ezzel próbálkoznék:
#[A-Z]{3}-[0-9]{5}-[0-9]{3}

Nem kellenek határoló karakterek a programodban? Ezt az A..Z szintaxist én most látom először, biztos, hogy támogatja az implementációd?
5

dialektus

carstepD · 2008. Jan. 28. (H), 15.28
(PHP 4.3.9)

Szia, a preg_match-hoz kell. PCRE, ha jól emlékszem
Igen A..Z az hibás, de kösz
3

regexp howto

sebi · 2008. Jan. 28. (H), 13.13
Van magyarul egy howto, ami a posix regexpekrol szol

http://chains.ch/2008/01/26/regular-expression-howto-magyarul/