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

nota XXVI. Список возможных символов в регулярном выражении


       Чтобы задать список символов, которые мы ищем надо сделать так:
    
#!/usr/bin/perl6
my $textus='O sancta simplicitas!';
if $textus ~~ m/ (<[xyz]>+) / {$0.say}
else {'xyz не найден'.say}
$textus='Ex mero motu';
if $textus ~~ m/ (<[xyz]>+) / {$0.say}
else {'xyz не найден'.say}

       Так.
       Можно использовать двоеточие как диапазон:
    
#!/usr/bin/perl6
my $textus='O sancta simplicitas!';
if $textus ~~ m/ (<[h..m]>+) / {$0.say}

       А как с кириллицей?
    
#!/usr/bin/perl6
my $textus='Суета сует. Суета сует. И всё суета...';
if $textus ~~ m/ (<[а..к]>+) / {$0.say}

       С буквой "ё" надо так:
    
#!/usr/bin/perl6
my $textus='Суета сует. Суета сует. И всё суета...';
if $textus ~~ m/ (<[ёж..к]>+) / {$0.say}
else {'Нету'.say}

       Это связано с тем, что ё на самом деле не находится в юникоде в ряду а..я.
    
#!/usr/bin/perl6
my $textus='Sueta suet. Sueta suet. I vsё sueta...';
if $textus ~~ m/ (<[а..я]>+) / {$0.say}
else {'Нету'.say}
Нету

       N.B. Наш алфавит включает 32 буквы + одна буква 'ё'
       Если наоборот, мы задаём blacklist из букв, тогда отрицание делается как -[]
    
#!/usr/bin/perl6
my $textus='Sueta suet. Sueta suet. I vsё sueta...';
if $textus ~~ m/ (<-[A..Za..z\ \.]>+) / {$0.say}
else {'Нету'.say}

       Bene.
# mutatio postrema: 30 Jan 2012

   регулярные выражения      charta situs       nota XXV <<     >> nota XXVII   

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