迪拉斯: Ein Wort in RegExp ausschließen?

Beitrag lesen

Hey,
reguläre Ausdrücke sind hier das falsche Werkzeug.

  
#!/usr/bin/perl  
use strict;  
use diagnostics;  
use HTML::TokeParser::Simple;  
  
my $parser = HTML::TokeParser::Simple->new(string => <<'');  
<div id=1>  
  <div id=2>  
    <div id=3>  
    </div>  
  </div>  
</div>  
  
my @idstack;  
while (my $tag = $parser->get_tag) {  
    if (  
        (ref $tag eq 'HTML::TokeParser::Simple::Token::Tag::Start')  
            and  
        ($tag->get_tag eq 'div')  
            and  
        (defined $tag->get_attr->{id})  
    ) {  
        print '[div'.$tag->get_attr->{id}.']';  
        push @idstack, $tag->get_attr->{id};  
        next;  
    } elsif (  
        (ref $tag eq 'HTML::TokeParser::Simple::Token::Tag::End')  
            and  
        ($tag->get_tag eq 'div')  
    ) {  
        my $id = pop @idstack;  
        print '[/div'.$id.']';  
        next;  
    };  
    print $tag->as_is;  
};  

Die Edgecases zu behandeln ist deine Hausaufgabe.

--
水-金-地-火-木-土-天-海-冥