Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 5 odgovora
  • 6.423 pregleda

Najnovija ↓

Tacno prebrojavanje 12.09.2003. u 14:21 · pre 281 mesec #1
Kako napraviti regularni izraz koji ce da tacno proveri broj pojavljivanja nekog para tagova u tekstu?
npr
$s = "<table><tr>xxx</tr><tr>yyy</tr></table>"
if ($s =~ /<table><tr>.*?</tr></table>/) {
# prolazi i ako tabela ima vise od jednog reda
}

bitno je da to bude jedan regularni izraz ako je ikako moguce (moglo bi sa while da svaki put otkida po jedan <tr>.*?</tr> par i slicno, ali to mi ne odgovara)
Re: Tacno prebrojavanje 15.09.2003. u 21:01 · pre 281 mesec #2
Citat:
rivan:
if ($s =~ /<table><tr>.*?</tr></table>/) {
# prolazi i ako tabela ima vise od jednog reda

Jesi li siguran da ovo prolazi bez gresaka?

Ako hoces samo prebrojati <tr> redove onda,
my $s = "<table><tr>xxx</tr><tr>yyy</tr></table>";
print scalar @{[ $s =~ m!(<tr>.*?</tr>)!gis ]};
print "\n";

Vidi perldoc -f scalar za detalje, ukratko prvo se forsira list kontekst @{[ ]} pa onda scalar vrati koliko je bilo list elemenata jer bez toga regex samo vrati string koji je matchirao.

Re: Tacno prebrojavanje 29.09.2003. u 09:30 · pre 281 mesec #3
Ne radi se o tome da je potrebno uraditi jednostavno prebrojavanje <tr> tagova, vec je potrebno voditi racuna i o <td> tagovima i eventualnim tabelama koje se nalaze unutra, a hteo sam da sve bude jedan regexp da bi mogao da sve stavim u neku if {...}elsif {...} strukturu... Svejedno resio sam citav problem na drugi nacin (pisanjem f-je u C-u)

Hvala na odgovoru i korisnim informacijama

P.S.
Siguran sam da regexp koji sam naveo prolazi i ako tabela ima vise od jednog reda (vise od jednog <tr></tr> para)
Re: Tacno prebrojavanje 29.09.2003. u 17:41 · pre 281 mesec #4
Citat:
rivan:
Ne radi se o tome da je potrebno uraditi jednostavno prebrojavanje <tr> tagova, vec je potrebno voditi racuna i o <td> tagovima i eventualnim tabelama koje se nalaze unutra, a hteo sam da sve bude jedan regexp da bi mogao da sve stavim u neku if {...}elsif


E, to je vec dosta slozenije, ima nesto o tome ali nisam bas proucavao,
http://www.perl.com/pub/a/2003/08/21/perlcookbook.html

Citat:

Siguran sam da regexp koji sam naveo prolazi i ako tabela ima vise od jednog reda (vise od jednog <tr></tr> para)


Cudno, meni kod pokretanja izbaci gresku za raj regexp.

pozdrav
Re: Tacno prebrojavanje 07.03.2004. u 15:33 · pre 275 meseci #5
Citat:
rivan:
Kako napraviti regularni izraz koji ce da tacno proveri broj pojavljivanja nekog para tagova u tekstu?
npr
$s = "<table><tr>xxx</tr><tr>yyy</tr></table>"
if ($s =~ /<table><tr>.*?</tr></table>/) {
# prolazi i ako tabela ima vise od jednog reda
}

bitno je da to bude jedan regularni izraz ako je ikako moguce (moglo bi sa while da svaki put otkida po jedan <tr>.*?</tr> par i slicno, ali to mi ne odgovara)


mislim da bi ovo trebalo ad stoji ovako ako ti to treba:
if ((@s =~ /<table><tr>.*?</tr></table>/)==1)
Potpis
Nemanja Jakovljevic
Re: Tacno prebrojavanje 08.03.2004. u 12:53 · pre 275 meseci #6
Samo to tvoje resenje cini mi se da ima "ogranicenu" primenu.

Recimo sve bih rekao da nebi prepoznalo kako treba ovako nesto

<table width="100%">
<tr><td colspan ... bla lba

Nije ni bitno sta vec ima. Mislim ci mti bude razlicito od <table> tebi to nece prepoznavati.

A ne znam da li je po standardu samo sto browser cini mi se da prepoznaje i ludorije tipa : <width=... table> ....mada nisam bas siguran u to ....
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme