[Moscow.pm] parsing {string}{string} Regexp-Common etc.
Динар Жамалиев
zhdinar на gmail.com
Сб Июн 11 03:31:34 PDT 2011
вариант не срабатывает со строкой
my $str = "{bla1 {bl}a2} }123".
"{bla3 {b{la4} }123".
"{{bla5 {bla6} }bla7}".
"{{bla8 {bla9} }{bla10}}123".
"{{bla8 {bla9} }bla10}123";
результат :
$VAR1 = [
'{bl}',
'{la4}',
'{bla6}',
'{bla9}',
'{bla10}',
'{bla9}'
];
11 июня 2011 г. 14:23 пользователь Ivan Petrov <i.petro.77.00 на gmail.com>написал:
>
> >>>>> Сейчас через Regexp::Common делаю так:
> >>>>
> >>>>> my @f = /$RE{balanced}{-parens=>'{}'}/g;
> >>>>
> >>>> какой-то изврат
> >>
> >>> Не согласен.
> >>
> >> зря.
> >>
> >>> 'any symbol' --- могут быть \w \d, а также
> >>> парные сочетания скобок ()[]{} и вложенные тоже
> >>> :)
> >>
> >> этого в исходном задании не было. ну да ладно.
>
> > any symbol --- любой символ(ы) (дословно)
>
> >> тогда как-нибудь так:
> >>
> >> /( \{ (?>[^{}]*) (?:\}\d*|(?1) \} \d*) )/gx;
>
> > Увы,
> > тяп-ляп, абы как не проходит:
>
> > Sequence (?1...) not recognized in regex; marked by <-- HERE in m/(
> > \{ (?>[^{}]*) (?:\}\d*|(?1 <-- HERE ) \} \d*) )/
>
> это Вы что-то не так скопипастили:
>
> $ perl test.pl
> $VAR1 = [
> '{any symbol}',
> '{any symbol}1',
> '{sym{bol{}}}4'
> ];
>
>
> $ cat test.pl
> #!/usr/bin/perl
>
> use warnings;
> use strict;
>
> use Data::Dumper;
>
> my $str = '{any symbol}{any symbol}1{any {sym{bol{}}}4';
> my @items = $str =~ /( \{ (?>[^{}]*) (?:\}\d*|(?1) \} \d*) )/gx;
>
> print Dumper \@items;
>
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
>
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20110611/35014cb5/attachment.html>
Подробная информация о списке рассылки Moscow-pm