Thread Hilfe zu Regex
(8 answers)
Opened by rooney10 at 2011-03-22 16:43 2011-03-22T22:59:17 rooney10 /g sorgt dafür, dass alle möglichen Treffer geliefert werden; normalerweise würde mit dem ersten Treffer die Arbeit getan sein. So wird der erste Treffer ausgelesen und verarbeitet; weil es eine while-Schleife ist, wird nochmal geprüft, ob ab der letzten Trefferposition noch ein weiterer Treffer möglich ist. Wenn ja, wird dieser auch geliefert und kann verarbeitet werden. Dann wird nochmal geprüft, ... usw. bis kein Treffer mehr gefunden wird. /c veranlasst, dass eben die letzte Treffer-Position behalten wird. Normalerweise wird die Trefferposition vergessen, sobald kein Treffer gefunden wurde. Führ das mal aus; einmal mit /gc und einmal nur mit /g. Achte auf den Output... 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 #! /usr/bin/perl use strict; use warnings; my $text = do { local $/; <DATA> }; my @matches; print $text; while ( $text =~ m<\\includegraphics(?:\[.*?\])?\{(.+?)\}>gc ) { push @matches, $1; print "Treffer bei Position ", pos($text), "\n"; } print "Stehe nun bei Position ", pos($text), "\n"; # ohne /c ist hier pos($text) nicht definiert... { local $\ = local $, = $/; print @matches; } __DATA__ Schau mal dies: \includegraphics{bild1.jpg} Oder dieses: \includegraphics[2,"second"]{bild2.jpg} Aber nicht das hier: \includegraphicsNew{no_pic.jpg} meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen! |