[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