Thread Spezielles Regex (4 answers)
Opened by tecker at 2008-11-11 11:39

renee
 2008-11-11 12:47
#116179 #116179
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
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/

View full thread Spezielles Regex