parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Ну в предыдущем примере как раз рабочий пример (для которого по идее rsplit должен был бы сработать но нет)

@chusov 23.08.2021 14:11 / 23.08.2021 14:13

*Я видел ваш комментарий к PCRE Приложение4 в документации, где утверждалось и отменялось заявление, что символ конца строки не учитывается у regexp оператора "." (и похоже как будто что-то все таки не так, или я не понимаю как это работает)

1) Входной файл:
#---тело файла---
---
>line
->line2
-->line3
--->line4
still line4 content
>
>
->
#---/тело файла ---
2) На выходе:
(в идеале такая таблица)
+-----+-----+-----------------------+
| pos | pfx |        match          | 
+-----+-----+-----------------------+
|  0  | >   | line                  |
+-----+-----+-----------------------+
|  1  | ->  | line2                 |
+-----+-----+-----------------------+
|  2  | --> | line3                 |
+-----+-----+-----------------------+
|  3  | --->| line4                 |
|     |     | still line4 content   |
+-----+-----+-----------------------+
|  4  | >   |                       |
+-----+-----+-----------------------+
|  5  | >   |                       |
+-----+-----+-----------------------+
|  6  | ->  |                       |
+-----+-----+-----------------------+
*Никаких особых 0D0A, 0x00 и utf8-гремлинов, в виде похожих скобочек и тире - нет.
Все символы строго ASCII, уживающиеся в однобайтной кодировке.
Символ переноса всегда 0A

Мне казалось, что задача должна укладываться в regex-delimeter, решенный дважды оператором rsplit т.к. если смотреть на всё, как цепочку байт то получается вполне понятная (и казалось бы простая задача).

Исходный файл выглядит, как (пробелы я для читаемости поставил)
--- 0A > line 0A -> line2 0A --> line3

итого получается, что между полезными записями всегда разделитель вида
$sRegex[\n-*>]

а первый и всегда ожидаемый кусок с "---" мы можем выкидывать, это не проблема.

но подставив такое в rsplit (в котором будет вместо .* вместо .+ для записей (чтобы пустые значения тоже ловило) - мы получаем какие-то паразитные пустные значения в конце.