Thread Spezielles Regex
(4 answers)
Opened by tecker at 2008-11-11 11:39
Zu 1.)
Durch local $/ ist der Trenner undef, wodurch die ganze Datei auf einmal eingelesen wird. Dadurch muss ich mich nicht durch das Array durcharbeiten. Mehr zu $/ findest Du hier: perldoc perlvar http://reneeb-perlblog.blogspot.com/2007/10/ntzlic... Zu 2.) Bei s/// kann man beliebige Trenner nehmen. Ich habe mir irgendwann angewöhnt, Ausrufezeichen zu nehmen. Du kannst es auch durch s/paragraph\{(.*?)\}/$1/sg; ersetzen. Die Zeichen, die durch das (.*?) gespeichert wurden, stehen hier in $1 (mehr zu $<number> in perldoc perlvar). Da ich "paragraph{<beliebige Zeichen>}" durch "<beliebige Zeichen>" ersetze, ist das "paragraph{" und das "}" weg. s und g sind modifier des Regulären Ausdrucks. "s" bedeutet "single line". Dadurch matcht "." auch auf Newlines. Vergleiche: Code (perl): (dl
)
1 2 3 "test\n123" =~ /test.123/ and print "matched"; # vs. "test\n123" =~ /test.123/s and print "matched (2)"; "g" bedeutet "global matching". Dadurch werden "alle" Vorkommen ersetzt. Ohne das "g" würde nur das erste Vorkommen ersetzt werden. Vergleiche: Code (perl): (dl
)
1 2 3 4 5 6 my $var = "test\n123"; $var =~ s!t!!; print $var,"\n"; $var = "test\n123"; $var =~ s!t!!g; print $var,"\n"; Siehe auch http://perldoc.perl.org/perlre.html#Modifiers 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/ |