Я изменил ваш пример, применив следующие изменения:
- вручную заменил
<a/>
на </a>
как я считал опечаткой.
- добавили пару новых строк и диверсифицировали количество вхождений в каждой строке, чтобы проверить надежность выражения регулярного выражения
Наконец, вывод, который я использую, выглядит следующим образом:
ABC 123 <a href="link100">Desc100</a> DEF 456. GHI 789 <a href="link101">Desc101</a>. etc.1
ABC 123 <a href="link102">Desc102</a> DEF 456. GHI 789 <a href="link103">Desc103</a>. etc.2
ABC 123 <a href="link104">Desc104</a> DEF 456. GHI 789 <a href="link105">Desc105</a>. etc.ABC 123 <a href="link106">Desc106</a> DEF 456. GHI 789 <a href="link107">Desc107</a>. etc.3
ABC 123 <a href="link108">Desc108</a> DEF 456. GHI 789 <a href="link109">Desc109</a>ABC 123 <a href="link110">Desc110</a>. etc.4
Важно сделать копию оригинального документа.
В N++
Ctrl+H,
Найти что: (.*?<a href="(?<url>[^"]*)">(?<description>.*?)<\/a>)(?(?!(.*?<a href="(?<url>[^"]*)">.*?<\/a>))(.*?$)|())
Замените на: $+{description},
// разделитель - запятая, но вместо этого можно использовать любой другой символ
Обернуть: проверено
Режим поиска → выберите «Регулярное выражение» И ». Совпадения новой строки: проверено
Нажмите кнопку «Заменить все».
Полученный результат:
Desc100,Desc101,Desc102,Desc103,Desc104,Desc105,Desc106,Desc107,Desc108,Desc109,Desc110,
Эта операция оставляет документ со всеми необходимыми экземплярами. Теперь этот контент может быть добавлен в исходный документ вручную или программно.