perl6.suОсвоим perl6 к 2015 году!

квантификаторы


       +, * и ? имеют по-прежнему место быть:
    
#!/usr/bin/perl6
my $textus='Gooooooogle';
$textus ~~ s:g/o+/o/;
$textus.say;
$textus ~~ s/ё*le/ol/;
$textus.say;
my @urls='http://perl6.su', 'https://perl6.su', 'httpd://perl6.su', 'http://perl6.tu';
for @urls {
	if m/^http s? '://' \w+ '.' <[rs]> u/ {"$_ validus url est".say}
	else {"$_ non validus url est".say}
	}
Gogle
Gogol
http://perl6.su validus url est
https://perl6.su validus url est
httpd://perl6.su non validus url est
http://perl6.tu non validus url est

       Как я понял, квантификатор из фигурных скобок исчез. Вместо него пара астерисков.
    
#!/usr/bin/perl6
my $textus='Unuuuus Duuo Tres Quattuuuuuuor';
$textus ~~ s:g/u ** 4/#/; # :g - означает глобальную замену
$textus.say;
Un#s Duuo Tres Quatt#uuor

       Это был первый вариант, когда после двух астерисков указывается точное количество повторений образца.
    
#!/usr/bin/perl6
my $textus='Unuuuus Duuo Tres Quattuuuuuuor';
$textus ~~ s:g/u ** 3..5/#/; 
$textus.say;
Un#s Duuo Tres Quatt#uor

       Это был второй вариант, когда после астерисков диапазон разных вариантов. Как видно, сейчас также действует правило жадности, когда из всех возможных выборок берётся самая толстая.
    
#!/usr/bin/perl6
my $textus='Unuuuus Duuo Tres Quattuuuuuuor';
$textus ~~ s:g/u ** 3..*/#/; 
$textus.say;
Un#s Duuo Tres Quatt#or

       Это двухсполовинный вариант. В диапазоне появляется звездочка, что означает бесконечность. В данном случае - от трех до бесконечности.
       Превратить жадность в аскетичность можно как всегда, поставив вопрос после квантификатора:
    
#!/usr/bin/perl6
my $textus='Unuuuus Duuo Tres Quattuuuuuuor';
$textus ~~ s:g/u **? 3..5/#/; 
$textus.say;
Un#us Duuo Tres Quatt##or

       Вот. Стоило умерить аппетит, как места хватило на две решеточки.
# mutatio postrema: 8 Oct 2012

   квантификаторы      charta situs       nota XXXI   

    RSS     stdin@perl6.su    © Alexius Karmanov, 2010-2011