Thread Zeilen mit bestimmten Wort suchen und darin Text in '' in Array schreiben
(16 answers)
Opened by eyekona at 2013-08-15 12:37
Reguläre Ausdrücke sind auf jeden Fall ein geeignetes Werkzeug, um diese Aufgabe zu lösen. Zum Beispiel so:
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 use 5.012; use warnings; my $text = <<EOF; Hallo Welt! Rhabarber mit 'Quark' source '/sonst/wo' oder auch anderes Zeug '/wo/anders' source Blubberdidu 'daddeldumm' kawumm EOF my @sources = map { if (/source/ && /'([^']*)'/) { ($1) } else { () } } split /\n+/, $text; say for @sources; Im Prinzip geht aber natürlich alles was mit regulären Ausdrücken machbar ist auch anders. Zum Beispiel so: 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 32 33 34 35 36 37 use 5.012; use warnings; my $text = <<EOF; source '/foo/bar' hollareiduljoeh peng '/zack/bumm' source oder so oans 'zwoa' dreie EOF my @lines; my $pos = 0; my $len = length $text; while ($pos < $len) { my $sep = index $text, "\n", $pos; if ($sep >= 0) { push @lines, substr $text, $pos, $sep - $pos; $pos = $sep + 1; } else { push @lines, substr $text, $pos; $pos = $len; } } my @sources = map { my $start = index $_, "'"; my $stop = index $_, "'", $start + 1; if (index($_, 'source') >= 0 and $start >= 0 and $stop >= 0) { (substr $_, ++$start, $stop - $start) } else { () } } @lines; say for @sources; Zum Thema Tutorials: Es lohnt sich vielleicht ein Blick auf die Wikiseite PerlTutorials oder natürlich auch die Lektüre von perlretut. When C++ is your hammer, every problem looks like your thumb.
|