SkÃ¥ne Sjælland Linux User Group - http://www.sslug.dk Forside   Tilmelding   Postarkiv   Forum   Kalender   Søg
MhonArc Dato: [Date Prev] [Kronologisk oversigt] [Date Next]   TrÃ¥d: [Date Prev] [Oversigt trÃ¥de] [Date Next]   MhonArc
 

Re: [PERL] regex på html



On Tue, 23 Nov 1999, Carsten Svaneborg wrote:

> Mit perl program sætter &\=undef og læser hele filen ind som en 
> streng, fjerner derefter microsoft tags som bgcolor etc. men
> jeg kan ikke få ovenstående til at virke. Hvis $fyle indholder
> filen så prøver jeg:
> 
> $fyle =~ s/<\s*body(\s*)>(\s*[^<][^!][^-][^-][^#])/<body$1><!--# ..
> -->$2/gsi;

[^<] vil matche alt udover <, det betyder så at denne regexp matcher ikke
hvis det første tegn efter mellemrum efter > er <. Den vil ikke kigge på
resten af regexpen.

Desuden vil du også erstatte det der du match

I øvrigt står der \s* after body, det dækker kun over spaces. Måske vil du
have .*? som vil tage alt ikke grådigt (så den fortsætter så lidt som
muligt)

Jeg tror ikke det kan lade sig gøre med een regexp, ikke når du har den
"\s*" der. Der er noget der hedder negative lookahead men det kan AFAICS
ikke bruges når du har den \s*. Derfor vil jeg foreslå to regexps:


    s/<\s*body(.*?)>/<BODY$1><!--#whatever--!>/gi
        unless /<\s*body(.*?)\s*<!--/i;

Hvis du skal lave noget mere kompliceret med HTML var det måske en ide at
bruge en af de HTML-parsere der er i Perl, som kan bryde hele HTML-teksten
i elementer osv.



-- 
==============================================================================
Erwin Andreasen   Herlev, Denmark <sslug@sslug>          UNIX System Programmer
<URL:http://www.andreasen.org>              <*>              Goodbye, Richard!
==============================================================================



 
Forside   Tilmelding   Postarkiv   Oversigt   Kalender   Søg

 
 
Henvendelse vedrørende websiderne til <www_admin>. Senest ændret 2005-08-10, klokken 19:52
Denne side vedligeholdes af MHonArc .