Thread Problem mit Match Anweisung und RegEx (9 answers)
Opened by Corni_Cornflake at 2017-08-20 15:38

GwenDragon
 2017-08-21 11:24
#187276 #187276
User since
2005-01-17
14533 Artikel
Admin1
[Homepage]
user image
Wenn bei Split das Regex in Klammern ist, wird das auch mitgefangen.

Das kannst du mit Data::Dumper sehen.
Code (perl): (dl )
1
2
3
4
5
6
7
use Data::Dumper;

my $normalText= "Bla bla blabla bla. Timo macht sein Zimmer sauber. Er vergisst das Staubsaugen.";

my @saetze = split( /([.,:;?!])/,$normalText );

print Dumper \@saetze;

ergibt:
$VAR1 = [
'Bla bla blabla bla',
'.',
' Timo macht sein Zimmer sauber',
'.',
' Er vergisst das Staubsaugen',
'.'
];


Das gefangene Satzzeichen ist also nicht weg.

Was du tun musst, ist das wieder zusammenzufügen.
Ein Beispiel (mir fällt gerade nix anderes ein, kann sein, dass CPAN:List::Util das besser kann).
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
my @saetze = split /([.,:;?!])/,$normalText;

{ # hier beginnt der lokale Code-Block
  my @temp;
  while (scalar @saetze) { # solange noch was im Array
    my $satz = shift @saetze;    # hole Satz
    my $sz = shift @saetze;      # hole Satzzeichen
    $satz .= $sz if defined $sz; # füge beide zusammen
    push @temp, $satz;           # zwischenspeichern
  }
  @saetze = @temp;  # zusammengefügtes wieder in Sätze-Array zurückspeichern 
} # Ende des lokalen Blocks

Last edited: 2017-08-21 11:36:24 +0200 (CEST)
die Drachin, Gwendolyn


Unterschiedliche Perl-Versionen auf Windows (fast wie perlbrew) • Meine Perl-Artikel

View full thread Problem mit Match Anweisung und RegEx