[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