Portál AbcLinuxu, 12. května 2025 04:42

Dotaz: perl - vzor při vyhledávání v html

5.7.2013 10:53 qweerty | skóre: 1
perl - vzor při vyhledávání v html
Přečteno: 249×
Odpovědět | Admin
Potřeboval bych pomoc s vyhledáním všech vzorů v html.

Zpracovávám html stránku kterou mám načtenou v proměnné $page
my $html = HTML::Tree->new();
$html->parse($page);
while ($html){
my ($id) = $html->look_down( 'id','o012' );
print encode_utf8($id->as_HTML ), "\n";
}
Potřeboval bych pomoc s nahrazením
o012
za něco jako
/o\d{3}/
, aby mi při nalezení vzoru bylo toto id vypsáno.

Řešení dotazu:


Nástroje: Začni sledovat (2) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

5.7.2013 11:10 vbar
Rozbalit Rozbalit vše Re: perl - vzor při vyhledávání v html
Odpovědět | | Sbalit | Link | Blokovat | Admin
/o(\d{3})/ && print $1;
wamba avatar 5.7.2013 13:55 wamba | skóre: 38 | blog: wamba
Rozbalit Rozbalit vše Re: perl - vzor při vyhledávání v html
Odpovědět | | Sbalit | Link | Blokovat | Admin
look_down podporuje notaci s reg. objektem tak, že něco jako $html->look_down( 'id',qr{o\d{3}} ), ale ten příklad je celý nějaký divný. Co přesně má dělat?
This would have been so hard to fix when you don't know that there is in fact an easy fix.
pavlix avatar 5.7.2013 13:58 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: perl - vzor při vyhledávání v html
ale ten příklad je celý nějaký divný.
Školní zadání?
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
wamba avatar 5.7.2013 15:05 wamba | skóre: 38 | blog: wamba
Rozbalit Rozbalit vše Re: perl - vzor při vyhledávání v html
Že by byli někde tak "osvíceni", že by zadávali úkoly v Perl-u?
This would have been so hard to fix when you don't know that there is in fact an easy fix.
5.7.2013 15:39 qweerty | skóre: 1
Rozbalit Rozbalit vše Re: perl - vzor při vyhledávání v html
Dekuji, na toto jsem po zalozeni vlakna a cteni prisel.
my ($id) = $tree->look_down( 'id',qr/o\d{3}/ );
fungluje jak ma. Vypise prvni vyskyt podle reg.vyrazu.

s Perlem zacinam uz tri mesice, chtel bych jeste v necem popostrcit

jak mam toto vse zacyklovat tak aby mi to proslo pres celou stranku a vyhledalo vsechen vyskyt

pomoci while mi to vypisuje jen prvni vyskyt hodnekrat zasebou
while($tree){
	my ($id) = $tree->look_down( 'id',qr/o\d{3}/ );
	print encode_utf8($id->as_HTML) , "\n";
}
Řešení 1× (qweerty (tazatel))
wamba avatar 5.7.2013 16:14 wamba | skóre: 38 | blog: wamba
Rozbalit Rozbalit vše Re: perl - vzor při vyhledávání v html
my @id = $tree->look_down( 'id',qr{o\d{3}}xms );
foreach (@id) {
    say $_->as_HTML;
}
This would have been so hard to fix when you don't know that there is in fact an easy fix.
5.7.2013 16:54 qweerty | skóre: 1
Rozbalit Rozbalit vše Re: perl - vzor při vyhledávání v html
Dekuji toto dela co potrebuji.

mohl bych se zeptat proc tam pro uvozeni reg.vyrazu je {
wamba avatar 5.7.2013 17:04 wamba | skóre: 38 | blog: wamba
Rozbalit Rozbalit vše Re: perl - vzor při vyhledávání v html
protože to zápis umožňuje :) jen má preference s m,qr,s lze použít libovolný znak nebo závorky tedy lze psát např. m#a.*#; s[ahoj][cau]g atd. přičemž se doporučuje používat buď / / nebo { }
This would have been so hard to fix when you don't know that there is in fact an easy fix.
5.7.2013 17:10 qweerty | skóre: 1
Rozbalit Rozbalit vše Re: perl - vzor při vyhledávání v html
Dalsi a posledni dotaz. Ta chyba co jsem mel v zapisu je ze jsem se neodkazoval na hash @ ale na promenou $ ?
wamba avatar 5.7.2013 17:48 wamba | skóre: 38 | blog: wamba
Rozbalit Rozbalit vše Re: perl - vzor při vyhledávání v html
s @ na začátku je pole(array) ty si tam měl ($id) což je list, s prvním prvkem $id tedy si dostal sice pole, ale při porovnání se vzal jen první prvek, což v tomto případě (a shodou okolností) je to stejné jako kdyby si tam napsal jen $id

Podobně by si mohl ($id1,$id2) dostat první dva prvky.

rozdíl mezi $id a ($id) lze vidět třeba tady
my @array=('a','b');
my $id = @array;
my ($id)=@array;
kdy v tom případě bude v $id počet prvků(2) a v tom druhém první prvek('a') jenom upozorňuji, že při zápisu my $id =('a','b') by byl v $id poslední prvek list tedy 'b'. :)

navíc si tam měl while přes $tree, které se v té smyčce nemění tak záleží čeho si chtěl dosáhnout
This would have been so hard to fix when you don't know that there is in fact an easy fix.
5.7.2013 15:08 qweerty | skóre: 1
Rozbalit Rozbalit vše Re: perl - vzor při vyhledávání v html
Odpovědět | | Sbalit | Link | Blokovat | Admin
no ne tak uplne presne, zadne skolni zadani, jen se snazim hrat si kdyz je ten svatek

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.