Вариант для распечатки |
Пред. тема | След. тема | ||
| Форум Программирование под UNIX (Perl) | |||
|---|---|---|---|
| Изначальное сообщение | [ Отслеживать ] | ||
| "Возможно ли на regexp perl удалить определенное число байтов?" | +/– | |
Сообщение от zhukovia (ok), 05-Фев-20, 13:29 | ||
Есть строка текста в которой в произвольном месте может содержаться "мусорный" текст который нужно вычистить. У "мусора" следующие параметры он оканчивается на \x00\x00 (в hex представлении), а в начале \xE3\x33 но при этом он не всегда находится в самом начале иногда перед ним бывает 1 или 2 символа. При этом длинна "мусорной" строки всегда 70 байт. Встречается "мусор" произвольное число раз. | ||
| Ответить | Правка | Cообщить модератору | ||
| Оглавление |
| Сообщения | [Сортировка по ответам | RSS] |
1.
Сообщение от zhukovia (ok), 05-Фев-20, 13:41
| +/– | |
Забыл добавить подобная последовательность (\x00\x00) может быть не один раз внутри "мусора". И начинается не строго с \xE3\x33. В начале бывает еще 1-2 символа произвольных, но длинна всегда 70 байт. | ||
| Ответить | Правка | Наверх | Cообщить модератору | ||
| Ответы: #2 | ||
| 2. Сообщение от Pahanivo (ok), 05-Фев-20, 14:10 | +1 +/– | |
> Забыл добавить подобная последовательность (\x00\x00) может быть не один раз внутри "мусора". | ||
| Ответить | Правка | Наверх | Cообщить модератору | ||
| Родитель: #1 Ответы: #6 | ||
| 3. Сообщение от Аноним (3), 06-Фев-20, 00:14 | +/– | |
> Есть строка текста в которой в произвольном месте может содержаться "мусорный" текст | ||
| Ответить | Правка | Наверх | Cообщить модератору | ||
| Ответы: #4, #7 | ||
| 4. Сообщение от ACCA (ok), 06-Фев-20, 01:11 | +/– | |
>> Е> Что-то такое, если я вас верно понял. | ||
| Ответить | Правка | Наверх | Cообщить модератору | ||
| Родитель: #3 Ответы: #5 | ||
| 5. Сообщение от Аноним (3), 06-Фев-20, 03:31 | +/– | |
> Так оно не проверит на \xE3\x33. Нужно тщательнее: | ||
| Ответить | Правка | Наверх | Cообщить модератору | ||
| Родитель: #4 Ответы: #8 | ||
6.
Сообщение от zhukovia (ok), 06-Фев-20, 07:23
| +/– | |
>> Забыл добавить подобная последовательность (\x00\x00) может быть не один раз внутри "мусора". | ||
| Ответить | Правка | Наверх | Cообщить модератору | ||
| Родитель: #2 Ответы: #10 | ||
7.
Сообщение от zhukovia (ok), 06-Фев-20, 07:29
| +/– | |
> $clean = do{ use bytes ; $str =~ s/.{68}\x00{2}(?!=\x00)//g ; $str } | ||
| Ответить | Правка | Наверх | Cообщить модератору | ||
| Родитель: #3 Ответы: #9, #12 | ||
| 8. Сообщение от Pahanivo (ok), 06-Фев-20, 12:20 | +/– | |
> Это не сложное выражение. | ||
| Ответить | Правка | Наверх | Cообщить модератору | ||
| Родитель: #5 Ответы: #11 | ||
| 9. Сообщение от Pahanivo (ok), 06-Фев-20, 12:26 | +/– | |
> (?!=\x00) как я понимаю эта конструкция будет искать \x00{2} после которых нет | ||
| Ответить | Правка | Наверх | Cообщить модератору | ||
| Родитель: #7 | ||
| 10. Сообщение от Pahanivo (ok), 06-Фев-20, 12:27 | +/– | |
> Согласен что нужно четко описывать, но проблема в том что эти 1-2 | ||
| Ответить | Правка | Наверх | Cообщить модератору | ||
| Родитель: #6 | ||
| 11. Сообщение от Аноним (3), 07-Фев-20, 00:47 | +/– | |
>> Это не сложное выражение. | ||
| Ответить | Правка | Наверх | Cообщить модератору | ||
| Родитель: #8 Ответы: #14 | ||
| 12. Сообщение от Аноним (3), 07-Фев-20, 00:50 | +/– | |
>> $clean = do{ use bytes ; $str =~ s/.{68}\x00{2}(?!=\x00)//g ; $str } | ||
| Ответить | Правка | Наверх | Cообщить модератору | ||
| Родитель: #7 Ответы: #13 | ||
| 13. Сообщение от Pahanivo (ok), 07-Фев-20, 14:01 | +/– | |
> Конструкция смотрит 2 нулевых байта, после которых нет нулевых байтов, после чего | ||
| Ответить | Правка | Наверх | Cообщить модератору | ||
| Родитель: #12 | ||
| 14. Сообщение от Pahanivo (ok), 07-Фев-20, 14:02 | +/– | |
> Думал сначала написать ?=[^\x00], а потом исправил и знак равно забыл убрать. | ||
| Ответить | Правка | Наверх | Cообщить модератору | ||
| Родитель: #11 Ответы: #15 | ||
| 15. Сообщение от Аноним (3), 07-Фев-20, 14:37 | +/– | |
Примерно же понятно. Есть какой-то бинарный протокол, по которому чанки данных идут с каким-то заголовком. Так-то конечно надо изучать протокол и делать unpack по формату. | ||
| Ответить | Правка | Наверх | Cообщить модератору | ||
| Родитель: #14 | ||
| 16. Сообщение от U.N.Owen (?), 08-Фев-20, 14:05 | –1 +/– | |
> Есть строка текста в которой в произвольном месте может содержаться "мусорный" текст | ||
| Ответить | Правка | Наверх | Cообщить модератору | ||
| Ответы: #17 | ||
| 17. Сообщение от ACCA (ok), 10-Фев-20, 21:06 | +/– | |
>> (в hex представлении), а в начале \xE3\x33 но при этом он | ||
| Ответить | Правка | Наверх | Cообщить модератору | ||
| Родитель: #16 Ответы: #18 | ||
| 18. Сообщение от U.N.Owen (?), 28-Мрт-20, 19:45 | +/– | |
> Ага. Разжуй две ситуации, в которых твой regex не сработал: | ||
| Ответить | Правка | Наверх | Cообщить модератору | ||
| Родитель: #17 | ||
|
Архив | Удалить |
Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема |
|
Закладки на сайте Проследить за страницей |
Created 1996-2025 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |