ugrás a tartalomhoz

Hogyan épülnek fel a reguláris kifejezések?

eaposztrof · 2007. Nov. 13. (K), 00.53
udv..

nagyon orulnek ha valaki adna tenyleges informaciot, h hogyan mukodnek a "pattern"-ek

probaltam megfejteni peldaul ezt: preg_replace( '/(.*:\/\/)?([^ \/]*)([^ >"]*)/', '$3', $_SERVER['HTTP_REFERER']);

de nem sok sikerrel. amit szeretnek perpill megoldani, az az hogy
ha ($_SERVER['HTTP_REFERER']) == "http://asd.asd/" a felepitese akkor {tortenjenvalami}
de ha $_SERVER['HTTP_REFERER'] == "http://asd.asd/asd/" (tovabbi alkonyvtarak vannak) {akkor is tortenjen valamimas}

remelem eleg egyertelmu a peldam.. de a lenyeg a patter-kapcsolok megertese lenne, de lenyegeben fogalmam sincs h hogyan nevezik oket.. es php.net-en sem talaltam leirast..

koszi
 
1

Preg_replace

pug72 · 2007. Nov. 13. (K), 02.11
Szia!

A preg_replace manualban olvassgass. Lényegében mindent leír a fv-ről. Ha a RegExp kifejezés működése érdekel, akkor találhatsz rengeteg anyagot a neten (pl: Pattern Syntax), főként angol nyelven és esetleg egy egyszerű magyar nyelvű e-book-ot is letölthetsz a tutorial.hu-ról is.

;-)
2

Még egy magyar leírás

vbence · 2007. Nov. 13. (K), 10.36
Pont egy ilyen példát tartalmaz "URL formázott kiírása" címmel.
http://vbence.web.elte.hu/regex_leiras.html

... bár ideje lenne frissítenem, lényegében helytálló infók vannak benne. :)
3

reguláris/szabályos kifejezés

flash42 · 2007. Nov. 13. (K), 10.42
A reguláris kifejezések néhány egyszerű műveletből/operátorból állnak és a konstansokból. Gyakorlatilag egy nyelvtant alkothat az ember a maga szabályaival. Ez a nyelvtan generatív nyelvtan lesz. A generatív nyelvtan egy bizonyos nyelv szavait generálja. Több nyelvtan is adhatja ugyanazt a nyelvet, tehát több nyelvtan is generálhatja a te példádnak megfelelő dolgokat. Több "megoldás" lehetséges ami pontosan olyanokat generál.

A PATTERN kifejezés azt sugallja, hogy ezt a MINTÁT próbálja megtalálni/illeszteni, ez nem mond ellent annak, hogy a reguláris kifejezés generálja a szavakat. Annyi történik, hogy olvassa a szöveg karakterét(konstans) és közben a reguláris kifejezésnek megfelelően próbálja generálni az adott karaktert, ha ez nem sikeres, akkor az olvasott karakter(lánc) nem lehet a nyelv szava. Ha a megelőző karakterek még nyelvbeli szót generálhattak, akkor ezt elfogadjuk. Ha nem akkor egyszerűen olvasunk és generálunk tovább. Ez általában mohón történik, vagyis addig generálja a karaktereket a reguláris kifejezésed, amíg csak tudja. A lusta elv az pedig az, hogy egyből ELFOGADJA azt a SZÓT ami nyelvbeli (generálható).

A reguláris kifejezéseknek megfelelő automata osztály is létezik, ezek az állapotgépek, ha azokat esetleg ismered, segíthet az elképzelésében.

Gyakori hiba a reguláris kifejezés építése során, hogy az operátorokat/műveleteket nem különbözteti meg a készítő a konstansoktól. Ez abból fakad, hogy az operátor valójában egy jel a billentyűzeten, tehát másra is használhatjuk, mint konstans. Ekkor valahogy jelezni kell, hogy ez most nem operátor, hanem konstans (rendszerint \ jelet kell tenni az adott karakter elé).

Wikipedia szabályos kifejezés / regular expression
5

Szép, akadémikus

vbence · 2007. Nov. 13. (K), 10.52
... szövget sikerült beollózni. Ezért képtelenek az egyetemek használható tudást adni :)
7

nyihi

flash42 · 2007. Nov. 13. (K), 21.14
az egyetem sok haszontalan dolgot magyaráz, ez azon kevesek közé tartozik amelyek hasznosak lehetnek.

a másik, hogy az állapotgép fogalma éppenséggel inkább tartozik a programozóra, mint a matematikusra. az hogy kereső automata nem tudom mit jelent amúgy, az már web2 lehet, nemértem.

azt hittem érthető lesz, de túlkomplikáltam. hihi. mondjuk aki nem tudja elolvasni a magyar nyelven elérhető manualt annak úgyismindegy mit ír az ember.
8

a logikája

flash42 · 2007. Nov. 13. (K), 21.18
a sajátos logikája pedig annyiban összefoglalható amit fennt írtam és az oldaladon említett RegEx nevű mítikus szörnyet el is pusztítottuk. ezért gondoltam, hogy hátha valakit érdekel ez, merhogy gondolkozott rajta és nem talált anyagot. az akadémikus szinttől azért távol volt a postom. távol is vagyok tőle.
6

ouch....

amonrpg · 2007. Nov. 13. (K), 19.03
Ez aztán... elég értelmetlen. Nem lenne egyszerűbb 'kereső automata'-nak hívni? :D A matematikához többen konyítanak azért. Legalábbis ennyire.
4

regexp

rrd · 2007. Nov. 13. (K), 10.44
Olvasd el az alapokat, aztán sok helyen lehet tesztelgetni, hogy érted-e. Pl http://rrd.1108.cc/static/pregteszt.php itt.