Schrift
[thread]10668[/thread]

Regulären Ausdruck um Leerzeichen erweitern



<< |< 1 2 >| >> 15 Einträge, 2 Seiten
renee
 2007-10-26 13:49
#101362 #101362
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Für solche Aufgaben würde ich eher CPAN:Web::Scraper oder CPAN:HTML::Parser empfehlen!
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
GwenDragon
 2007-10-26 13:57
#101366 #101366
User since
2005-01-17
14748 Artikel
Admin1
[Homepage]
user image
Code (perl): (dl )
my $description = ($source =~s/<meta\s+name=\"?description\"?\s+content=\"?([^\"]*)\"?\s*\/?>//i) ? $1 : '';

Die \s* stimmten vorher nicht, sehe ich gerade, denn die Attribute bei HTML müssen durch Whitespaces getrennt sein.

Allerdings wird dein Regex bei, erlaubten HTML wie:
Code: (dl )
<meta content="eviloX -Die Welt aus der sicht von Christian Drieling" name="description" />

versagen!
Gast Gast
 2007-10-26 12:38
#101371 #101371
Hallo Liebe Perl Community,

ich habe folgenden regulären Ausdruck:

Code (perl): (dl )
my $description = ($source =~s/<meta\s*name=\"?description\"?\s*content=\"?([^\"]*)\"?>//i) ? $1 : '';


Das Problem ist nun, dass sich die Quelltexte von HTML Seiten in den letzten Jahren verändert haben und zwar folgende erkannt werden:

Code: (dl )
<meta name="description" content="eviloX -Die Welt aus der sicht von Christian Drieling"/>


Aber nicht mehr folgende (aufgrund des Leerzeichens vor dem />):

Code: (dl )
<meta name="description" content="eviloX -Die Welt aus der sicht von Christian Drieling" />


Leider bin ich mit den regulären Ausdrücken nicht so fit, also bitte ich um eure Hilfe.

Vielen Dank im vorraus!
Drieling
GwenDragon
 2007-10-26 13:34
#101381 #101381
User since
2005-01-17
14748 Artikel
Admin1
[Homepage]
user image
Code (perl): (dl )
my $description = ($source =~s/<meta\s*name=\"?description\"?\s*content=\"?([^\"]*)\"?\s*\/?>//i) ? $1 : '';
könnte gehen.
Gast Gast
 2007-10-26 13:42
#101384 #101384
vielen Dank, funktioniert scheinbar einwandfrei :)
Gast Gast
 2007-10-26 15:54
#101398 #101398
Hmm habe grad das problem , dass wenn am abschluss nu "> oder " > steht, es nicht erkannt wird weil der backslash fehlt... kann man da was machen?
Gast Gast
 2007-10-26 16:22
#101400 #101400
das problem ist, wenn ich das nicht über die regex machen kann, ist es sehr sehr viel arbeit, das ist kein kleines script sondern ein komplexes programm und da ist das nichts mit mal eben was anderes nehmen... sonst würde ich das schon nutzen, aber der kosten nutzen faktor ist nicht gegeben...
GwenDragon
 2007-10-26 16:25
#101401 #101401
User since
2005-01-17
14748 Artikel
Admin1
[Homepage]
user image
Hallo Christian (ich nehme mal an, du heißt so),

HTML mit Regexes zu parsen ist nicht ohne Fehlerträchtigkeit. Und oft genung greifen die Regexe nicht.
Man sollte es deswegen lassen.
Dafür gibt es wirklich Module, die das besser können!

Schon die Perl FAQ warnt:
http://faq.perl.org/perlfaq9.html#How_do_I_remove_...
renee
 2007-10-26 16:16
#101404 #101404
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
renee+2007-10-26 11:49:17--
Für solche Aufgaben würde ich eher CPAN:Web::Scraper oder CPAN:HTML::Parser empfehlen!


*wiederhol*
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Gast Gast
 2007-10-26 16:29
#101405 #101405
Hmm okay. Dann heißt das wohl viel Arbeit.

Aber danke trotzdem ;)
<< |< 1 2 >| >> 15 Einträge, 2 Seiten



View all threads created 2007-10-26 12:38.