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

Aleksander Gorohovski angel на feht.dgtu.donetsk.ua
Пт Июн 10 23:59:17 PDT 2011


On Sat, 11 Jun 2011 09:52:38 +0300, Ivan Petrov wrote:

>> Уважаемое сообщество,
>> Доброго времени суток!
>
>> Посоветуйте,
>> как лучше (эффективнее) разобрать строку вида:
>
>> $_ = '{any symbol}{any symbol}1{any symbol}2...';
>
>> на фрагменты
>> {any symbol}
>> {any symbol}1
>> {any symbol}2
>> ...
>
>> Сейчас через Regexp::Common делаю так:
>
>> my @f = /$RE{balanced}{-parens=>'{}'}/g;
>
> какой-то изврат

Не согласен.

'any symbol' --- могут быть \w \d, а также
парные сочетания скобок ()[]{} и вложенные тоже
:)

>> но получаю только
>> {any symbol}
>> {any symbol}
>> {any symbol}
>> ...
>
>> и не знаю можно ли как то указать, что
>> закрывающаяся фигурная скобка может идти с \d*
>> Пробовал
>> /$RE{balanced}{-parens=>"{}\d*"}/g;
>> но это не работает
>> :(
>
>> Спасибо.
>
>
> $ perl test.pl
> $VAR1 = [
>           '{any symbol}',
>           '{any symbol}1',
>           '{any symbol}2'
>         ];
> $ cat test.pl
>
> #!/usr/bin/perl
>
> use warnings;
> use strict;
>
> use Data::Dumper;
>
> my $str = '{any symbol}{any symbol}1{any symbol}2';
> my @items = $str =~ /(\{[^}]*\}\d*)/g;

К сожалению условия [^}] не должно быть
:(

> print Dumper \@items;
>
> можно еще пробелы добавить, если надо


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