Новости | FAQ | Авторы | Документация | В действии | Библиотека |
Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
@chusov 21.08.2021 17:54 / 21.08.2021 18:02
Задача:line4 still line4 contentэто отдельная запись (с сохранением всех переносов)
--- >line ->line2 -->line3 --->line4 still line4 content > > ->Скажу сразу, я пробовал разные отладчики regexp-ов, но при переключении PCRE, PCRE2, Python, ECMA,... они выдают порой разные результаты, при том, что я далеко не уходил каких-то наворотах. Это говорит, что есть поведение (особенно с жадностью) которое я не понимаю.
Моя логика была следующей: Коль скоро первая линия "---" нам не нужна (а она всегда есть), то признак начала записи упрощается до (символ_конца_строки) + (дефис 0 или более) + (>) А дальше всё что угодно, только не результат :) $txt[--- >line ->line2 -->line3 --->line4 still line4 content > > -> ] # и так я пробовал но тут жадность вторых скобок съедает все последующее $tab[^txt.match[(\n-*>)(.*)][g]] # а так оно не работает (тут похоже как будто ? вообще не работает на жадность) # т.к. он по одному символу приносит, т.е. синтаксис ? в других случаях) $tab[^txt.match[(\n-*>)(.*?)][g]] # думал может вот так жадность пристроить, но нет $tab[^txt.match[((\n-*>)(.*)?)][g]] # отчаялся, решил, что ок, пусть "---" тоже войдет в match # и я задействую работающую регулярку из rsplit, только поменяю .+ на .* $sRegex[\n-*>] $tab[^t3g-text.match[(.*?)(?:$sRegex|^$)][g]] как бы... да но, оно выдает доп.паразитную пустую строку в $tab (в конце видимо) т.е. в $tab должно (вкупе с "---") попасть 8 строк, а там 9В итоге вопроса два: