The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Perl)
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Возможно ли на regexp perl удалить определенное число байтов?, zhukovia (ok), 05-Фев-20, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


4. "Возможно ли на regexp perl удалить определенное число байтов?"  +/
Сообщение от ACCA (ok), 06-Фев-20, 01:11 
>> Е> Что-то такое, если я вас верно понял.
> $clean = do{ use bytes ; $str =~ s/.{68}\x00{2}(?!=\x00)//g ; $str }

Так оно не проверит на \xE3\x33. Нужно тщательнее:

$clean = do{ use bytes;
  $str =~ s/\xE3\x33.{66}\x00{2}//og;
  $str =~ s/.\xE3\x33.{65}\x00{2}//og;
  $str =~ s/..\xE3\x33.{64}\x00{2}//og;
  $str }


Три простых регекса отработают в разы быстрее одного сложного.

Ответить | Правка | Наверх | Cообщить модератору

5. "Возможно ли на regexp perl удалить определенное число байтов?"  +/
Сообщение от Аноним (3), 06-Фев-20, 03:31 
> Так оно не проверит на \xE3\x33. Нужно тщательнее:

Если в данных не бывает \0\0, удаляемый кусок всегда 70 байт и оканчивается двумя и более \0, моего решения достаточно.
Без конкретики в условиях лучше не переусложнять.

> Три простых регекса отработают в разы быстрее одного сложного.

Это не сложное выражение.

Ответить | Правка | Наверх | Cообщить модератору

8. "Возможно ли на regexp perl удалить определенное число байтов?"  +/
Сообщение от Pahanivo (ok), 06-Фев-20, 12:20 
> Это не сложное выражение.

(?!=\x00) - что это значит?
Есть:
(?=ххх) заглядывание вперед
(?!xxx) заглядывание вперед с отрицанием
а что у вас нифига не понятно, думаю что скорее второе.

Вообще в силу формулировки афтара, его следовало бы послать ... формулировать, а не гадать не пойми на чем.

Ответить | Правка | Наверх | Cообщить модератору

11. "Возможно ли на regexp perl удалить определенное число байтов?"  +/
Сообщение от Аноним (3), 07-Фев-20, 00:47 
>> Это не сложное выражение.
> (?!=\x00) - что это значит?
> Есть:
> (?=ххх) заглядывание вперед
> (?!xxx) заглядывание вперед с отрицанием
> а что у вас нифига не понятно, думаю что скорее второе.
> Вообще в силу формулировки афтара, его следовало бы послать ... формулировать, а
> не гадать не пойми на чем.

Думал сначала написать ?=[^\x00], а потом исправил и знак равно забыл убрать. Регулярку конечно не тестил.
Посылать неправильно. Вопрос корректный. Возможно? Возможно. Он же не попросил сразу годного в продакшен решения.

Ответить | Правка | Наверх | Cообщить модератору

14. "Возможно ли на regexp perl удалить определенное число байтов?"  +/
Сообщение от Pahanivo (ok), 07-Фев-20, 14:02 
> Думал сначала написать ?=[^\x00], а потом исправил и знак равно забыл убрать.
> Регулярку конечно не тестил.
> Посылать неправильно. Вопрос корректный. Возможно? Возможно. Он же не попросил сразу годного
> в продакшен решения.

Дак афтур и толком задачу не сформулировал - в оригинальной формулировке ее вообще решить невозможно.

Ответить | Правка | Наверх | Cообщить модератору

15. "Возможно ли на regexp perl удалить определенное число байтов?"  +/
Сообщение от Аноним (3), 07-Фев-20, 14:37 
Примерно же понятно. Есть какой-то бинарный протокол, по которому чанки данных идут с каким-то заголовком. Так-то конечно надо изучать протокол и делать unpack по формату.
Но регулярки fine too, это же перл.
Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру