Sziasztok!
Lenne egy nagyon aranyos feladat, amit meg kellene oldanom, de a megoldásra még sajnos nem jöttem rá, így a segítségeteket kérem! :(
A feladat szövege a következő:
"A mellékelt szövegben távolság, idő, és tömeg mennyiségek szerepelnek, pl.
3; 5 km. A mennyiségek a következő részekből állnak: Egy szám, melyben
szerepelhet legfeljebb egy tizedes vessző. A tizedesvessző után nulla vagy
több számjegy állhat még. Ezt egy szóköz követi, majd legfeljebb egy
el®tag, (pl. kiló- (k), mili- (m), vagy nano (n)), és végül egy mértékegység
(m, s, vagy g). Nyissuk meg a szöveget Vim-mel és keressük meg az összes
mennyiséget, amelyre illik a fenti minta."
A mellékelt szöveg lehet tetszőleges, a fenti a paraméterekkel!
Előre is köszönöm a segítséget!
- 1161 megtekintés
Hozzászólások
Hát ha tanulni akarsz belőle, akkor legjobb ha te magad csinálod meg. Írd be googleba, hogy "vim regular expressions".
Minden leírt tagnak egyszerű a regexpes megfelelője, sorrendben egymás mögé írod:
- "1 vagy több" számjegy
- "1 db" szóköz "VAGY" "1 db" vessző majd "0 vagy több" számjegy majd "1 db" szóköz
- "0 vagy 1" előtag [kmn]
- "1 db" mértékegység
már csak az "1 vagy több", "0 vagy 1", "1 db", "0 vagy több" regexpes megfelelőjét kell kikeresned, és a "VAGY" operátort.
- A hozzászóláshoz be kell jelentkezni
a szám [0-9]
a tizedes pontot escape-ld ki \.
az egy vagy több valami esetén a * a nyerő
a space-t szintán ki kell escape-lni
a betű [a-z] abiből kettő van egymás mögött a mintában
érted?!
most már nagyon nagyon nagyon sokat segítettünk
- A hozzászóláshoz be kell jelentkezni
az 'egy vagy tobb' az nem * hanem +
amugy tenyleg nem nagy cucc a feladat, gyakorlatilag le kell irni regexp-kent azt, amit elmondtal rola, nem olyan nehez az...
- A hozzászóláshoz be kell jelentkezni
a + az kiterjesztett regexp, amit a vim nem tud (és nem is akar tudni), tehát a * kell,
golgota nem azt mondta hogy "1vtöbb" az a *, hanem hogy azt kell használni, tehát jól mondta :P
- A hozzászóláshoz be kell jelentkezni
Nem vagyok se regex, se vim guru, így fogalmam sincs, hogy hol kezdődik a kiterjesztett regexp, de az biztos, hogy az épp kéznél lévő vimben szépen megy a +.
- A hozzászóláshoz be kell jelentkezni
jé tényleg :) nem tudom mivel kevertem akkor, lehet mert escapelni kell
- A hozzászóláshoz be kell jelentkezni
Figyelem! Alább a cselekmény részletei következnek, akár a végkifejlet is szerepelhet!
:D
[0-9]+(\.[0-9]*)?\ [kmn]?[msg]
vim számára escape-elve:
[0-9]\+\(\.[0-9]*\)\?\ [kmn]\?[msg]
~~~~~~~~
De ezt az egy lépést ki nem tevé,
Az nem tett semmit, nem tud semmit is.
- A hozzászóláshoz be kell jelentkezni