Image

Imagecpplang 🤔curious

Category:

Regular Expressions

Есть строка 1234567890$, привести ёё к виду 1.234.567.890$.

Варианты преобразования:
$price =~ s/(?<=\d)(?=(\d\d\d)+(?!\d))/./g;
$price =~ s/(\d)(?=(\d\d\d)+(?!\d))/$1./g;
while($price =~ s/(\d)((\d\d\d)+(\D|\b))/$1.$2/g){};

Вариант с чтением данных из файла:

 #!/usr/bin/perl 

 undef $/;  # режим поглощения файла, иначе будет считана только первая строка
 $text = <>; # чтение из файла

 $text =~ s/(?<=\d)(?=(\d\d\d)+(?!\d))/./g;

 print "$text\n";
 


По мотивам "Mastering Regular Expressions. Second Edition" (J.E.F.Friedl) :-).