
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} | | xyz не найден
=> <x>
|
Так. Можно использовать двоеточие как диапазон:| | #!/usr/bin/perl6
my $textus='O sancta simplicitas!';
if $textus ~~ m/ (<[h..m]>+) / {$0.say} | | => <im>
|
А как с кириллицей?| | #!/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
|