[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