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

nota XVI. Регексы


       Что с регулярными выражениями (регексами)? Вроде бы они претерпели серьёзные изменения. Будем потихоньку разбираться. Теперь для поиска по шаблону надо использовать ~~:
    
#!/usr/bin/perl6
my $text='Anno 2010. perl6.su stiti. ';
if ($text ~~ m/(\d\d\d\d)/) {
	$0.say;
	}

       Bene. Легко заметить, что $1 теперь $0:
    
#!/usr/bin/perl6
my $text='Anno 2010. perl6.su stiti. ';
if ($text ~~ m/(\d\d\d\d).+(\d+)/) {
	$0.say;
	$1.say;
	}

       Вот. Всяческие пробелы сейчас служат украшательским целям в первую очередь:
    
#!/usr/bin/perl6
my $text='Anno 2010. perl6.su stiti. ';
if ($text ~~ m/
		( \d\d\d\d )
		.+
		( \d+ )
		/
	) {
	$0.say;
	$1.say;
	}

       А если так?
    
#!/usr/bin/perl6
my $text='NotaBene';
if ($text ~~ m/ Nota Bene /) {
	'N.B.'.say;
	}
N.B.

       Теперь только цифро-буквы плюс подчеркивание означают сами себя. Остальное надо экранировать или заключать в кавычки.
    
#!/usr/bin/perl6
my $text='NotaBene';
if ($text ~~ m/ Nota' 'Bene /) { 'N.B.'.say	}
else {'P.S.'.say}
P.S.

       Иногда удобнее может быть так:
    
#!/usr/bin/perl6
my $text='NotaBene';
if ($text ~~ m/ 'Nota Bene' /) { 'N.B.'.say	}
else {'P.S.'.say}
P.S.

       N.B. В регулярных выражениях 'Nota Bene' и 'Nota\ Bene' разные вещи.
      
# mutatio postrema: 18 Sep 2010

   регулярные выражения, m, ~~      charta situs       nota XV <<     >> nota XVII   

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