Avatar billede thomaxz Nybegynder
16. januar 2008 - 12:55 Der er 7 kommentarer og
1 løsning

Regular exprresion macth link

jeg har en fil

<!DOCTYPE NETSCAPE-Bookmark-file-1>
<!-- This is an automatically generated file.
It will be read and overwritten.
Do Not Edit! -->
<TITLE>Bookmarks</TITLE>
<H1>Bookmarks</H1>
<DL><p>
    <DT><H3 FOLDED ADD_DATE="1200386599">test2</H3>
    <DL><p>
        <DT><A HREF="http://www.hedegaard-agro.dk/page841.aspx" ADD_DATE="1200386603" LAST_VISIT="1200386603" LAST_MODIFIED="1200386603">Kvæg u</A>
    </DL><p>
    <DT><A HREF="http://www.google.dk/" ADD_DATE="1200386421" LAST_VISIT="1200386422" LAST_MODIFIED="1200386422">Google</A>
    <DT><A HREF="http://www.ab-fodbold.dk/" ADD_DATE="1200386431" LAST_VISIT="1200386431" LAST_MODIFIED="1200386431">www.AB-fodbold.dk 522</A>
</DL><p>


og denne kode

      while ($line =~ m/<H3.>.<\/H3>/g)
        {
          print "Found '$&'.  Next attempt at character " . pos($string)+1 . "\n";
        }

burde den ikke macthe test2?

det mest for atest, det jeg gerne vil ende op med er at få alle linke, altså det i href til blive udskrevet, alt html gejlet skal væk.
Avatar billede nielle Nybegynder
16. januar 2008 - 13:02 #1
Et punktum mancteh kun et enkelt tegn.

Prøv i stedet med:

while ($line =~ m/<H3.*?>.*?<\/H3>/g)
Avatar billede Slettet bruger
16. januar 2008 - 13:04 #2
Til parsing af HTML kode kan jeg anbefale modulet HTML::TokeParser, den har jeg haft meget glæde af.
Avatar billede nielle Nybegynder
16. januar 2008 - 13:05 #3
Det der matches er dog *alt* det som passer med hele regexp'en. Dvs.:

$& = <H3 FOLDED ADD_DATE="1200386599">test2</H3>

Hvis du kun skal have fat i test2, så er det noget i stil med:

while ($line =~ m/<H3.*?>(.*?)<\/H3>/g)

og så $1 i stedet for $&.
Avatar billede Slettet bruger
16. januar 2008 - 13:54 #4
Bare for grundighedens skyld, med TokeParser (antager at HTML filen ligger i fil.html, den kan dog også køre direkte på en streng reference)

my $p = HTML::TokeParser->new('fil.html');

while ( my $t = $p->get_tag('h3') ) {
  print $p->get_trimmed_text,"\n";
}

dette printer alle h3 oversrkrifter, har man brug for atributter i h3'eren kan man kigge på indholdet af $t
Avatar billede thomaxz Nybegynder
17. januar 2008 - 09:51 #5
Tak.
Avatar billede nielle Nybegynder
17. januar 2008 - 12:41 #6
Hvem vil du gerne have svar fra?
Avatar billede thomaxz Nybegynder
18. januar 2008 - 09:31 #7
den løsninge jeg brugte, var nieller's
Avatar billede nielle Nybegynder
18. januar 2008 - 09:36 #8
Svar :^)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester