[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