# code >>
    my @chanks;
    my $x = "{bla1 {bl}a2} }".
            "{bla3 {b{la4} }".
            "{{bla5 {bla6} }bla7}".
            "{{bla8 {bla9} }bla10}";

    $x =~ /^
        (\{.+?\}(?=\{))

        (
         (?: (?<=\}) \{.+?\}(?=\{) ) (?{ push @chanks, $2 if $2; }) | (?{
push @chanks, $2; })
        )+

        (\{.+?\}\z)
    /x;

    print join "\n", $1, @chanks, $3;
#<< code

результат:

{bla1 {bl}a2} }
{bla3 {b{la4} }
{{bla5 {bla6} }bla7}
{{bla8 {bla9} }bla10}

11 июня 2011 г. 12:15 пользователь Aleksander Gorohovski <
[email protected]> написал:

> On Sat, 11 Jun 2011 11:01:41 +0300, Николай Мишин <[email protected]> wrote:
>
>  Все таки, по хорошему, покажите весь текст исходный и что должно быть на
>> выходе, постановка задачи не ясна
>>
>
> Конкретно будет так:
>
> $_ = '{any{symbols}}{{any}symbols}1{{any}2{symbols}}33';
>
> out array:
>
>
> {any{symbols}}
> {{any}symbols}1
> {{any}2{symbols}}33
>
> где 'any symbols' --- \w \d () [] {}
> без пробелов.
> --
> Moscow.pm mailing list
> [email protected] | http://moscow.pm.org
>
-- 
Moscow.pm mailing list
[email protected] | http://moscow.pm.org

Ответить