[Moscow.pm] parsing {string}{string} Regexp-Common etc.

Динар Жамалиев zhdinar на gmail.com
Сб Июн 11 03:21:39 PDT 2011


тогда добавим еще условие (?<!\{) и иолучится так
      ...
        (
         (?: (?<!\{) \{.+?\}\d*(?=\{) ) (?{ push @chanks, $2 if $2; })
        )+
     ...
11 июня 2011 г. 14:10 пользователь Aleksander Gorohovski <
angel на feht.dgtu.donetsk.ua> написал:

> On Sat, 11 Jun 2011 12:36:27 +0300, Динар Жамалиев wrote:
>
>  Простите, не учел возможность присутствия цифр после скобок, вот так
>> кажется
>> работает:
>>
>>    my @chanks;
>>    my $str = "{bla1 {bl}a2} }123".
>>            "{bla3 {b{la4} }123".
>>            "{{bla5 {bla6} }bla7}".
>>            "{{bla8 {bla9} }bla10}123";
>>
>>    $str =~ /^
>>        ((?: \{.+?\}\d* )(?=\{))
>>
>>        (
>>         (?: \{.+?\}\d*(?=\{) ) (?{ push @chanks, $2 if $2; })
>>        )+
>>
>>        (\{.+?\}\d*\z)
>>    /x;
>>
>>    print join "\n", $1, @chanks, $2 , $3;
>>
>
> Премного благодарен.
>
> В первоначальном варианте я путался понять зачем нужен был выбор
> push @chanks, $2 if $2; |  push @chanks, $2;
> а теперь стало ясно, что не нужен.
>
> Оч.классно получается.
> Хотя не учитывается возможный вариант, например,
> если в последнем фрагменте (или другом) будет:
>        ...
>        {{bla8 {bla9} }{bla10}}123
>
> то получится вывод из 2-х элементов
> ...
> {{bla8{bla9}}
> {bla10}}123
>
> а должен 1:
> ...
> {{bla8{bla9}}{bla10}}123
>
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
>
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20110611/60decf56/attachment.html>


Подробная информация о списке рассылки Moscow-pm