Je vous recommanderais d'abandonner complètement regex - il est tout simplement trop difficile de le faire fonctionner dans des cas comme celui-ci. Tout ne peut pas être résolu facilement avec regex! Dans ce cas, la plupart des langages de script peuvent le faire assez facilement. J'ai écrit un morceau de JavaScript pour vous,  ici  - entrez simplement vos délimiteurs et votre entrée, puis cliquez sur Soumettre. 
 Pour ce qui est des explications: il se scinde par le délimiteur de début, puis, pour chaque "bloc", il se divise par le délimiteur de fin. Nous nous retrouvons avec un bloc de texte entre un début et une fin et effectuons un remplacement pour cela. Ensuite, nous rejoignons les blocs séparés. Ce n'est pas le moyen le plus efficace, mais c'est un peu plus facile que de traiter des caractères individuels. 

 Vieille solution, partiellement efficace, regex se trouve ci-dessous. je  fortement  vous recommande de ne pas l'utiliser. 
 Réponse rapide: n'utilisez pas Notepad ++, utilisez  ce  JS Snippet (entrez votre texte en bas à droite et cliquez sur Soumettre). Remplacer START et END dans le script en bas à gauche si nécessaire. 
 Vous pouvez également utiliser PowerShell, qui est natif de Windows (Vista): 
Get-Content input.txt | %{ $_ -replace "(?<=START.*?)-(?=.*?END)", " " } | Out-File output.txt
 Remplacer input.txt et output.txt en conséquence. Remarque: il doit s'agir de fichiers différents. 
 Cette solution particulière ne fonctionne sans bugs que si vous n’avez que  un  apparition de START par ligne  et   un  apparition de END par ligne  et  ils ne couvrent pas les lignes - nous pouvons donc traiter chaque ligne séparément. 
 Compte tenu des garanties selon lesquelles une seule correspondance sera nécessaire par ligne, chaque correspondance étant contenue dans une ligne, la correspondance entre (?<=START.*?)-(?=.*?END) et remplacer par un seul espace fonctionnerait -  sauf  Notepad ++ ne semble pas aimer ce motif particulier. Il prend en charge les regards indiscrets (en plein PCRE, apparemment), mais il y a quelque chose à ce sujet qui fait trébucher. 
 Une alternative, similaire à ce que Johannes a déjà répondu, consiste à utiliser un motif simple: (START.*?)-(.*?END) et le remplacer par \1 \2. Le problème ici est que cela ne fera que correspondre  un  trait d'union par ligne à la fois. Cela devient vite fastidieux. 
 Ici, nous essayons d’utiliser un langage de script plus complet. JavaScript est une bonne alternative. Cependant, il  ne pas  soutien regarder derrière. Sur le plan positif, nous pouvons exécuter les choses en boucle, de sorte que la solution fastidieuse précédente est réellement viable. J'ai créé un exemple  ici .