Notepad ++ Заменить все не работает с совпадениями нулевой длины

avatar
Ωmega
1 июля 2021 в 18:50
97
0
0

Я пытался заставить что-то работать для (по общему признанию, очень смущающего) проекта и использовал опцию «Найти и заменить» в Notepad++, чтобы окружить некоторые экземпляры текста чата тегами HTML с целью записи чего-то в архив. Наших собственных. Замена всего вручную была бы невероятно утомительной, и похоже, что все существующие автозаменители либо устарели, либо больше не существуют в Интернете, поэтому я работаю самостоятельно.

Это выражение RegEx, которое я использовал в поле «Найти»:

((?<startpesterlog>\G-{2})|(?<endpesterlog>-{2}))|((?<extra>\[TG])|(?<extra2>\[EB]))|((?<DavePrefix>^TG: )(?<davetext>.*))|((?<JohnPrefix>^EB: )(?<johntext>.*))|(?<lastline>\G\Z)

и это выражение RegEx, которое я использовал в поле «заменить»:

(?{lastline}$+{lastline}</p>:(?{startpesterlog}<p align="center"><span class="black">--:(?{endpesterlog}--</span></p><p class="block">:(?{extra}<span class="dave">[TG]</span>:(?{extra2}<span class="john">[EB]</span>:(?{DavePrefix}<span class="dave">TG\: $+{davetext}<\/span> <br\/>:(?{JohnPrefix}<span class="john">EB\: $+{johntext}<\/span> <br\/>:???)))))))

Если вы нажмете кнопку "заменить", все будет работать так, как задумано - последняя строка журнала заменяется на </p> как обычно. Однако при использовании кнопки «заменить все» последний </p> вообще не обозначается. Я понятия не имею, почему, но, похоже, это проблема с первым RegEx, а не со вторым, поскольку использование кнопок «найти все» возвращает на единицу меньше, чем ожидалось.

Пример:

-- TurntechGodhead [TG] начал доставать эктоБиолога [EB] в 16:13 --

ТГ: образец текста

EB: образец текста 2

После форматирования:

<p align="center"><span class="black">-- TurntechGodhead <span class="dave">[TG]</span> начал приставать к эктобиологу <span class="john">[EB ]</span> в 16:13 --</span></p><p class="block">

<span class="dave">TG: образец текста / <br/>

<span class="john">EB: образец текста 2 / <br/> </p>

Спасибо.

Источник
MonkeyZeus
1 июля 2021 в 19:00
1

Поэтапная замена не дает мне </p>. Блокнот++ v7.9.1

Ωmega
2 июля 2021 в 00:35
0

@MonkeyZeus это странно. он должен выделяться сразу после последнего символа, используя поиск следующего, если это не так, я отредактирую сообщение, чтобы включить версии, находящиеся в хранилище блокнота ++.

Ответы (0)