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

Ivan Petrov i.petro.77.00 на gmail.com
Сб Июн 11 03:23:56 PDT 2011


>>>>> Сейчас через 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