ugrás a tartalomhoz

Karaktersorozatból számok kinyerése megadott pozícióból

juhostt · 2013. Már. 12. (K), 13.18
Sziasztok!

Adott egy filenev ami akár egy karaktersorozat is lehetne, amelynek a nevéből szeretnék kinyerni 2 különboző számot.
A filenév így épül fel:
valamix()600y()700.jpg
A valami szó nem fix, a hossza változik.
A 2 szám is változik, nem minden esetben 3 számjegyű. (2-4 számjegy között fog mozogni)
Ami fix, hogy az x()után jön egy szám és az y() után jön egy szám. Ez a 2 szám kellene nekem.

Szerintem pregmatch-al kellene megoldani, de nem nagyon vágom ezt a témát sajnos. Előre is köszönöm a segítséget!
 
1

preg_match

Hidvégi Gábor · 2013. Már. 12. (K), 13.29
Igen, preg_match() segítségével oldható meg talán a legegyszerűbben, nagyon hasznos, érdemes rászánni az időt.

Pattern syntax

Ha most megvárod, míg kapsz konkrét megoldást, akkor nemsokára megint itt leszel a következő hasonló problémánál, ami senkinek sem jó. Szedd össze a bátorságod, nem olyan bonyolult az egész.
2

Ez kb annyi volt, hogy van

juhostt · 2013. Már. 12. (K), 13.36
Ez kb annyi volt, hogy van megoldás, old meg ahogy akarod. Összeszedtem a bátorságom, hogy megkérdezzem itt.
Ha egyszer kapnék egy használható példát amiből kiindulhatok akkor megtanulnám. Bár találtam több példát is magyarul, de ha valamit módosítok a példákban egyből nem nem megy a script.

Konkrétan itt nézelődtem:
http://vbence.web.elte.hu/regex_leiras.html

Ha annyira érteném akkor nem tettem volna fel kérdést.
3

Igen

Hidvégi Gábor · 2013. Már. 12. (K), 14.02
Igen, oldd meg, ahogy akarod. Azért nem írtam többet, mert nagyon sokszor fogsz reguláris kifejezésekkel megoldható problémába futni a programozói pályafutásod során, ezért megéri megtanulni.

Ha van konkrét kérdésed, hogy mit nem értesz, írd le nyugodtan, segítünk.
4

Hát első körben nem copy

juhostt · 2013. Már. 12. (K), 14.05
Hát első körben nem copy paste kódot vártam, hanem egy kis segítséget.
Hát próba szerencse alapon megkérdezem...
Hogyan lehet azt megoldani, hogy egy adott egy változóban az első karaktertől kezdve egy megadott karakterig törölje a karaktereket és adja vissza a változó értékét a módosított verzióban.

Ha így se érted hogy mennyire nem vágom a dolgot akkor egy konkrét példa:
Az előbb említett linkben van egy példa:

$datum = "2006. 07. 22.";
ereg ('([0-9]{4})[^0-9]*([0-9]{2})[^0-9]*([0-9]{2})', $datum, $talalat);
var_dump ($talalat);

Itt a {2} adja meg, hogy hány karaktert írjon ki (hónap és nap). Ha ezt módosítom, pl 3-ra, nem jelenik meg semmi. Szóval ilyen alap dolgokkal se vagyok tisztába, ezért szerettem volna egy használható segítséget kérni.
6

Pedig a fenti link leírja mit

Poetro · 2013. Már. 12. (K), 14.07
Pedig a fenti link leírja mit jelent a [0-9], mit jelent a {4}, sőt minden többi elemet is, amit a kifejezés tartalmaz.
8

1, ne ereg függvényeket

Hidvégi Gábor · 2013. Már. 12. (K), 14.09
1, ne ereg függvényeket használj, hanem preg-gel kezdődőeket
2, vbence leírásából:
{m,n}
Segítségével megadható minimum és maximum vagy pontosan megadott számú előfordulás - {3} pontosan 3 előfordulás; {3,} legalább 3 előfordulás; {2,5} legalább 2 legfeljebb 5 előfordulás; {,10} legfeljebb 10 előfordulás.
Ha a példádban átírod a 2-t 3-ra, akkor ugye három számot vár, emiatt nem sikerül.
12

Hogyan lehet azt megoldani,

Poetro · 2013. Már. 12. (K), 14.26
Hogyan lehet azt megoldani, hogy egy adott egy változóban az első karaktertől kezdve egy megadott karakterig törölje a karaktereket és adja vissza a változó értékét a módosított verzióban.

strpos, substr
13

$datum = "2006. 07.

BlaZe · 2013. Már. 12. (K), 14.47
$datum = "2006. 07. 22.";
ereg ('([0-9]{4})[^0-9]*([0-9]{2})[^0-9]*([0-9]{2})', $datum, $talalat);
var_dump ($talalat);

Itt a {2} adja meg, hogy hány karaktert írjon ki (hónap és nap). Ha ezt módosítom, pl 3-ra, nem jelenik meg semmi. Szóval ilyen alap dolgokkal se vagyok tisztába, ezért szerettem volna egy használható segítséget kérni.

A lényegét érted, hogy mire való a regex és hogy működik elméletben? Nem a konkrét patternekre, modifierekre irányul a kérdésem. Ezt azért kérdezem, mert ebből nekem az jön le, hogy ezzel nem vagy tisztában. 3-ra átírva a 2-t nyilván nem fog működni, mert nem 3 számjegyből áll a hónapok, napok száma. Ez nem azt jelenti, hogy hány karaktert ír ki, hanem hogy mire illeszkedik a leírt minta. Mert itt ugye mintákat írunk le. Ha ez megvan, akkor javaslom, hogy egyszerű példákkal kezdj el kísérletezni. Hamar bele lehet lendülni az alapokba, nem egy agysebészet, csak talán fura első blikkre.

Itt van egy online regex tester: http://regexpal.com/
14

Nem kertelek, 100% nem értek

juhostt · 2013. Már. 12. (K), 15.05
Nem kertelek, 100% nem értek a reguláris témához, de viszont szeretném megtanulni, szóval tényleg a legalapvetőbb dolgokat szeretném megérteni, hogy utána kezdjek valamihez. Átnézem az oldalt amit adtál.

Köszönöm mindenkinek a segítséget, valahogy csak megtanulom talán ezeket a reguláris dolgokat...
5

Ha nem akarod megtanulni a

Poetro · 2013. Már. 12. (K), 14.05
Ha nem akarod megtanulni a reguláris kifejezéseket, akkor használhatod az strpos függvényt, hogy kikeresd az x() és y() stringeket. Majd veszed az utána következő 4 karaktert a substr segítségével, ebből megvizsgálod, hogy melyik karakter nem szám már, és ezek lesznek a számaid.
7

Ilyen megoldással már

juhostt · 2013. Már. 12. (K), 14.09
Ilyen megoldással már sikerült, szóval a probléma valamelyest meg van oldva. De én szeretném megtanulni a reguláris kifejezések használatát, és ezzel megoldani, hogy később mást is megoldjak csak éppen nagyon hülye vagyok hozzá, ezért is kértem/kérek segítséget, bár szerintem rossz helyen várom a megvilágosodást.
9

A Reguláris kifejezések

Poetro · 2013. Már. 12. (K), 14.14
A Reguláris kifejezések mesterfokon könyv az, amit ehhez érdemes lenne elolvasni.
10

Hát ez is több mint a

juhostt · 2013. Már. 12. (K), 14.23
Hát ez is több mint a semmi.

Esetleg valami ingyenes letölthetőséget nem tudsz? Mondjuk még fizetőset se nagyon találtam.
11

Gondolom könyvtárban,

Poetro · 2013. Már. 12. (K), 14.25
Gondolom könyvtárban, antikváriumban megtalálod. Az O'Reilly-nél pedig megveheted és letöltheted angolul.
15

http://www.regular-expression

Wabbitseason · 2013. Már. 12. (K), 17.46
http://www.regular-expressions.info/

http://www.regular-expressions.info/tutorial.html
16

Köszönöm, úgy látom mégis van

juhostt · 2013. Már. 12. (K), 21.01
Köszönöm, úgy látom mégis van esély, hogy megtanuljam. Ezen témában azért szerettem volna tényleges copy/paste kódot, hogy jobban átlássam mi hogyan megy benne. Első ránézésre olyan "egyiptomi" volt ez a reguláris téma..
17

nehéz-e?

Pepita · 2013. Már. 12. (K), 21.30
van akinek nagyon, talán a mintákban levő sok spec. Karakter miatt. Ezért kell elsőre joval egyszerűbb példát hozni a valodinál. Te viszont a valos feladatot akartad rögtön megoldatni.