13
Warum sind die beiden gedruckten Zahlen unterschiedlich?Ersetzung mit leerer Zeichenfolge: unerwartetes Ergebnis
#!/usr/bin/env perl
use warnings;
use 5.10.1;
my $sep = '';
my $number = 110110110110111;
$number =~ s/(\d)(?=(?:\d{3})+\b)/$1$sep/g;
say "A: <$number>";
$number =~ s/\Q$sep\E//g;
say "B: <$number>";
Ausgang:
A: <110110110110111>
B: <11111111111>
Beachten Sie, dass \ Q \ E und Interpolation Zeichenfolgenoperationen sind, die nicht Teil der regulären Regex sind, da sie alle aufgelöst werden, bevor der Test "Muster wird auf leere Zeichenfolge ausgewertet" wird. Wenn Sie dieses Fehlverhalten wirklich verhindern wollen und Ihre Regex nur aus interpolierten Bits besteht, die alle leer sein können, werfen Sie ein '(? #)' Ein, das keinen Effekt auf das Matching hat, aber das Muster nicht leer macht. – ysth