Thread Regex-Problem mit Backreferences (44 answers)
Opened by DemoFreak at 2004-02-04 14:37

Crian
 2004-02-06 22:09
#79800 #79800
User since
2003-08-04
5873 Artikel
ModeratorIn
[Homepage]
user image
Z.B. so (ungetestet in Ermangelung solcher Mischdaten):

Code: (dl )
1
2
3
4
5
6
7
8
sub echte_laenge ($) {
   my @t    = split //, shift;
   my $cnt  = 0;
   for my $i (0..$#t-1) {
       ++$cnt if ord $t[$i] == 0x10 and ord $t[$i+1] == 0x15;
   }
   return scalar(@t) - $cnt;
}


... das baust Du dann hier ein:

Code: (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
#!/usr/bin/perl
use strict;
use warnings;

my @ind = (1, 6);
local $" = "-";

while (<DATA>) {
   print "\n$.: $_";
   my @parts = split;

   for my $i (@ind) {
       print "$.: parts besteht aus ", scalar@parts, " Teilen: @parts\nindex=$i\n";
       if ($parts[$i] eq "0") {
           @parts = (@parts[0..$i], '', @parts[$i+1..$#parts]);
       }
       else {
           while (echte_laenge($parts[$i+1]) < $parts[$i]) {
               if (echte_laenge($parts[$i+1])+1 == $parts[$i]) {
                   $parts[$i+1] .= ' ';
               }
               else {
                   $parts[$i+1] .= ' ' . splice @parts, $i+2, 1;
               }
           }
       }
   }
   print "$.: parts besteht aus ", scalar@parts, " Teilen: @parts\n";

   print "$.: '$parts[2]', '$parts[7]'\n";
}

_ _DATA_ _
Eintrag_eins 20 dies ist interessant blubb bla fasel 42 /home/dummie/meine datei ist so schoen.txt
Eintrag_zwei 0 blubb bla fasel 14 /root/mein.txt
Eintrag_drei 0 blubb bla fasel 0
Eintrag_vier 20 dies ist interessan  blubb bla fasel 42 /home/dummie/meine datei ist so schoen.txt
\n\n

<!--EDIT|Crian|1076098355-->
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite

View full thread Regex-Problem mit Backreferences