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

Aleksander Gorohovski angel на feht.dgtu.donetsk.ua
Сб Июн 11 03:36:43 PDT 2011


On Sat, 11 Jun 2011 13:23:56 +0300, Ivan Petrov wrote:


<кусь>

>> 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;

Всё равно та же ошибка.
По всей видимости у Вас версия Perl поновее будет.

Я сам в раздумьях подобрать эквивалент (?1),
пока не соображу...
(?\1) --- не подходит
(?$1) --- результат не тот

$VAR1 = [
           '{any symbol}',
           '{any symbol}1',
           '{}'
         ];

У меня:

$ perl -v

This is perl, v5.8.8 built for i386-linux-thread-multi
(with 2 registered patches, see perl -V for more detail)


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