Thread regex: Bestimmte Bereiche ignorieren
(5 answers)
Opened by Jeff at 2010-08-21 17:53
Ich würde die Kommentare und Zeichenketten aus dem Suchstring entfernen, bevor ich ihn auf geschweifte Klammern teste:
Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 #!/usr/bin/perl use strict; use warnings; my( $code, @open ); while ( my $line = <> ) { $code .= $line; $code =~ s/'(?:\\.|[^'])*'|"(?:\\.|[^"])*"//g; # strip strings $code =~ s!/\*.*\*/!!g; # strip comments if ( $code !~ /["']|\/\*/ ) { # no open comment/string? $code =~ s!//.*!!; # strip eol-comments for ( split //, $code ) { push @open, $. if /\{/; if (/\}/) { warn "uncalled-for closing brace at line $.\n" unless @open; pop @open; } # if } # for $code = ''; } # if } # while warn @open ." open brace(s) not closed at line(s): ". join(", ", @open) ."\n" if @open; edit: } { Fehler korrigiert und Ausgabe erweitert. edit2: @open[0..$open-1] durch @open ersetzt ;) edit3: Code nochmals gekürzt MfG Last edited: 2010-08-23 18:30:01 +0200 (CEST) perl -E'*==*",s;;%ENV=~m,..$,,$&+42;e,$==f;$"++for+ab..an;@"=qw,u t,,print+chr;sub f{split}say"@{=} me"'
|