Avaleht
uus teema   vasta Tarkvara »  Programmeerimine »  regulaar avaldist ei oska märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale.  :: Teata moderaatorile teata moderaatorile
otsing:  
keevitaja
AM 10 aastat
keevitaja

liitunud: 05.11.2001




sõnum 11.05.2006 22:34:52 regulaar avaldist ei oska vasta tsitaadiga

tere,

oleks tuvastada, kas lõigus on sees kolm komaga numbrit. näiteks: tere 3,09 ja 33,44 ning veel 466,44

kuidas seda regulaar avaldisena kirja panen? ise proovisin midagi sarnast, '([0-9],[0-9]){3}', kuid see ei tööta!

palun abi!

_________________
Hinnavaatlus ei ole koht arvamuse avaldamiseks!
Kommentaarid: 51 loe/lisa Kasutajad arvavad:  :: 1 :: 3 :: 40
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
keevitaja
AM 10 aastat
keevitaja

liitunud: 05.11.2001




sõnum 11.05.2006 22:42:45 vasta tsitaadiga

siis tahaks leida veel rida, mis algab numbriga, siis sisaldab mida iganes, siis on rea lõpus koma ning peale koma kohe kaks numbrit. ehk siis: 4424 dfsd 555,00 fs fs.fs.dfsfsd ())( 44,00

'^[0-9](.*),[0-9]{2}$' - see ei paista töötavat!

_________________
Hinnavaatlus ei ole koht arvamuse avaldamiseks!
Kommentaarid: 51 loe/lisa Kasutajad arvavad:  :: 1 :: 3 :: 40
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
nene
Kreisi kasutaja
nene

liitunud: 20.03.2004




sõnum 11.05.2006 22:56:05 vasta tsitaadiga

1 komaga number:
[0-9]+,[0-9]+


3 komaga numbrit:
([0-9]+,[0-9]+).+?([0-9]+,[0-9]+).+?([0-9]+,[0-9]+)


Sinu teise küsimuse vastuseks pakutud regulaaravaldis minul igastahes töötas.
Kommentaarid: 24 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 23
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
keevitaja
AM 10 aastat
keevitaja

liitunud: 05.11.2001




sõnum 11.05.2006 23:19:20 vasta tsitaadiga

ma ikka ei oska. ehk aitate veel

on selline lause formaat

03.04.2000 3 6 Mingi Nimi 445,00

nüüd oleks vaja see 'Mingi Nimi' muutujasse saada!

03 asemel võib ka lihtsalt 3 olla. samuti ei pruugi peale kuupäeva olla kahte numbrit ning need numbrid võivad ka mitme kohalised olla. samuti võib 'Mingi Nimi' olla lihtsalt 'Nimi' või siis koosneda rohkem kui kahest sõnast!

_________________
Hinnavaatlus ei ole koht arvamuse avaldamiseks!
Kommentaarid: 51 loe/lisa Kasutajad arvavad:  :: 1 :: 3 :: 40
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
nene
Kreisi kasutaja
nene

liitunud: 20.03.2004




sõnum 12.05.2006 11:23:23 vasta tsitaadiga

Midagi sellist ehk:


------------kuupäev------------- mingid arvud (   ) --komaga arv--

^[0-9]{1,2}\.[0-9]{1,2}\.[0-9]{4} (?:[0-9]+ )*(.*?) [0-9]+,[0-9]+$


Mainin veel, et:

(?: ) - tähistab, et seda blokki ei püüta muutujasse

.*? - on sama mis .* kuid proovib haarata võimalikult vähe teksti
Kommentaarid: 24 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 23
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
mirko28
Aeg maha 1p
mirko28

liitunud: 31.12.2003




sõnum 12.05.2006 11:32:18 php'ga vasta tsitaadiga

keevitaja kirjutas:
ma ikka ei oska. ehk aitate veel

03.04.2000 3 6 Mingi Nimi 445,00

nüüd oleks vaja see 'Mingi Nimi' muutujasse saada!


Testisin php's sellist avaldist:

$tekst = "03.04.2000 3 6 Mingi Nimi 445,00";
$regavaldis = "^([0-9]{1,2}.[0-9]{1,2}.[0-9]{4})(([^[:alpha:]])*)(([[:alpha:]]|[ ])*)(.*)$"; //03.04.2000
ereg ($regavaldis, $tekst, $regs);
if (ereg ($regavaldis, $tekst, $regs)){
foreach ($regs as $r)
echo "=>$r<BR>";
}else {
echo "reg avaldis ei sobi";
}

Väljund:

=>03.04.2000 3 6 Mingi Nimi 445,00
=>03.04.2000
=> 3 6
=>
=>Mingi Nimi
=>
=>445,00

Nagu näha, "Mingi Nimi" on seal kenasti olemas. Millegipärast on ka tühjad elemendid enne ja pärast elementi "Mingi Nimi", seda ei oska põhjendada hetkel, ilmselt on avaldises viga kusagil.
Kommentaarid: 5 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 4
tagasi üles
vaata kasutaja infot saada privaatsõnum
-Jaak-
HV vaatleja
-Jaak-

liitunud: 22.11.2004




sõnum 12.05.2006 16:54:28 vasta tsitaadiga


[0-9],[0-9]

peaks töötama kui need numbrid on vähegi normaalselt tekstis

parem oleks võibolla midagi stiilis

( |^)([1-9][0-9]+|0),[0-9]+( |$)


[edit]
Seda peaks juba lihtne olema edasi arendada matchimaks ridu kus on kolm või enam numbrit

üldiselt jah, läksin kergelt teemast mõõda icon_razz.gif

_________________
(1+sqrt(5))/2
tagasi üles
vaata kasutaja infot saada privaatsõnum
nene
Kreisi kasutaja
nene

liitunud: 20.03.2004




sõnum 13.05.2006 00:18:58 Re: php'ga vasta tsitaadiga

estrose kirjutas:

Millegipärast on ka tühjad elemendid enne ja pärast elementi "Mingi Nimi", seda ei oska põhjendada hetkel, ilmselt on avaldises viga kusagil.


ereg() IMHO siiski vingemate regulaaravaldiste kirjutamiseks hästi ei kõlba. Isegi PHP manuaal ütleb:

tsitaat:
preg_match(), which uses a Perl-compatible regular expression syntax, is often a faster alternative to ereg().


Viga sul selles avaldises aga pole: väljundis on ridu täpselt nii palju kui avaldises on algavaid sulge pluss esimene rida, mis sisaldab kogu teksti.
Kommentaarid: 24 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 23
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
Death
HV Guru
Death

liitunud: 06.09.2003




sõnum 14.05.2006 13:06:09 vasta tsitaadiga

ise kah perli avaldisi igal pool eelistanud...
_________________
"To be or not to be?" is a question of when, not if.
Kommentaarid: 39 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 36
tagasi üles
vaata kasutaja infot saada privaatsõnum
mirko28
Aeg maha 1p
mirko28

liitunud: 31.12.2003




sõnum 15.05.2006 10:21:16 Re: php'ga vasta tsitaadiga

nene kirjutas:

väljundis on ridu täpselt nii palju kui avaldises on algavaid sulge pluss esimene rida, mis sisaldab kogu teksti.


Jah täpselt nii see ongi, ma ei teadnudki.
Kommentaarid: 5 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 4
tagasi üles
vaata kasutaja infot saada privaatsõnum
keevitaja
AM 10 aastat
keevitaja

liitunud: 05.11.2001




sõnum 01.05.2010 10:53:41 vasta tsitaadiga

oleks vaja kontrollida, kas kasutaja poolt stringina sisestatud faili nimi on kirjutamis kõlbulik... ehk siis ei sisalde &&%% jne
kuidas seda teha?

_________________
Hinnavaatlus ei ole koht arvamuse avaldamiseks!
Kommentaarid: 51 loe/lisa Kasutajad arvavad:  :: 1 :: 3 :: 40
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
Supiplex
HV veteran
Supiplex

liitunud: 11.12.2002




sõnum 02.05.2010 09:50:39 vasta tsitaadiga

Lubab ainult tähed, numbrid ja "-_.,()". Pane neid lubatud märke sinna lõppu juurde nii palju kui tarvis.

'^[[:alnum:]\-\_.,\(\)]+$'

_________________
The young lady had an unusual list,
Linked in part to a structural weakness.
She set no preconditions.
Kommentaarid: 38 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 34
tagasi üles
vaata kasutaja infot saada privaatsõnum
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  Programmeerimine »  regulaar avaldist ei oska
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.