Modifiquei seu exemplo aplicando as seguintes alterações:
- substituiu manualmente
<a/>
por</a>
, pois o considerei como um erro de digitação. - adicionou algumas novas linhas e diversificou o número de ocorrências em cada linha para verificar a robustez da expressão regex
Por fim, a saída que uso é a seguinte:
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
É importante fazer uma cópia do documento original.
Em N ++
Ctrl + H
Encontre o que: (.*?<a href="(?<url>[^"]*)">(?<description>.*?)<\/a>)(?(?!(.*?<a href="(?<url>[^"]*)">.*?<\/a>))(.*?$)|())
Substitua por: $+{description},
// o delimitador é vírgula, mas qualquer outro caractere pode ser usado em vez disso.
Embrulhe ao redor: verificado
Modo de pesquisa → selecione 'Expressão regular' AND '. Matches newline ': verificado
Clique no botão "Substituir tudo".
Resultado obtido:
Desc100,Desc101,Desc102,Desc103,Desc104,Desc105,Desc106,Desc107,Desc108,Desc109,Desc110,
Esta operação deixa o documento com todas as instâncias necessárias. Agora, esse conteúdo pode ser anexado ao documento original manualmente ou programaticamente.