[Moscow.pm] Регулярник без /e

Dmitry E. Oboukhov unera на debian.org
Пт Окт 24 05:20:35 PDT 2008


On 11:31 Fri 24 Oct     , Maxim Vuets wrote:
MV> On 10/23/08, Dmitry E. Oboukhov <unera на debian.org> wrote:
>> на входе имеются такие данные
>> 
>> $txt=<<eof;
>> строка;строка;строка
>> строка
>> строка;строка
>> строка;строка;строка;строка;строка;строка
>> строка;строка;строка
>> ...
>> нужно одним регулярником преобразовать это в нечто вида:
>> 
>> $1;$5;$4;$2

MV> Было много буков, а что надо сделать я так и не понял.
MV> Можно конкретный пример: входящая строка и исходящая
MV> строка (или список)? Вот тогда и над черным ящиком будет
MV> думать проще (:

я вроде и много букав и входящую исходящую строки написал

вот пример что на входе что на выходе

вход:

1
1;2
1;2;3
1;2;3;4;5;6;7;8;9;10
тут;не;обязательно;цифры
а иногда и предложения;или несколько предложений
все разделено точками с запятой
2;3;5

на выходе надо получить регулярником что-то вида $1;$5;$4;$2
то есть для данного примера будет так:

1;;;
1;;;2
1;;;2
1;5;4;2
тут;;цифры;не
а иногда и предложения;;;или несколько предложений
все разделено точками с запятой;;;
2;;;3

то есть строку бьем на поля разделенные точками с запятой
а потом из разбитых собираем $1;$5;$4;$2

фишка в том что на входе не все поля присутствуют в некоторых строках
(количество неопределено)

сейчас работает нечто вроде такого кода (несколько упрощенно):

$txt =~ s/.*/join ';', (split ';',$&)[0,4,3,1]/emg;

но тут получается не регулярное выражение а функциональный код.
а хочется именно регулярник :)

--
... mpd paused: WASP - On Your Knees (Live'84)

. ''`.                               Dmitry E. Oboukhov
: :’  :   email: unera на debian.org jabber://UNera@uvw.ru
`. `~’              GPGKey: 1024D / F8E26537 2006-11-21
  `- 1B23 D4F8 8EC0 D902 0555  E438 AB8C 00CF F8E2 6537
----------- следущая часть -----------
A non-text attachment was scrubbed...
Name: отсутствует
Type: application/pgp-signature
Size: 197 bytes
Desc: Digital signature
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20081024/a2e72181/attachment.bin>


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