2017-12-08 8 views
-3

Ich habe Text, der viele Tags enthält, zum Beispiel:C# regex entfernen Text zwischen Tags

<b class="bold"> some bold text </b> main text 
<li>list text</li> 
<script> script text </script> 

und ich brauche, dass alle Texte zwischen den Tags und den Tags werden in diesem Beispiel gelöscht werden soll ich „Haupt bekommen Text "weil es der einzige Text ist, der keine Tags hat.

versuchte ich

Regex.Replace(input, "<.*?>", String.Empty); 

aber es wird alle Tags zu entfernen und nicht der Text zwischen ihnen

ich versucht, dieses

var regEx = new Regex(@"<(.+).*>.*<\/\1>"); 
var result = regEx.Replace(input, string.Empty); 

mit

<b class="bold"> bold </b> 
main text 
<ul> 
<li> list </li> 
<li> list2 <li> 
</ul> 

und i bekam

main text 
<ul> 


</ul> 
+0

Was haben Sie bisher versucht? Auch FYI: https://stackoverflow.com/a/1732454/ –

+0

Fügen Sie diese Informationen zur Frage selbst hinzu. Verwenden Sie [Bearbeiten] (https://stackoverflow.com/posts/47718397/edit) link –

+0

Verwenden Sie einen HTML-Parser, um HTML zu analysieren - [Was ist der beste Weg, HTML in C# zu analysieren?] (Https://stackoverflow.com/questions/56107/Was ist der beste Weg zu analysieren-html-in-c) –

Antwort

1

Ich bin nicht sicher, warum diese Fragen ohne Kommentare vernommen werden, es ist nicht sehr gut geschrieben, aber es ist klar, was er tun möchte.

Hier gehen Sie:

var regEx = new Regex(@"<(.+).*>.*<\/\1>"); 
var result = regEx.Replace(input, string.Empty); 

Beachten Sie, dass in einem gültigen HTML-Dokument, alle Inhalte in einem Tag von einer Art so Ihr Ergebnis immer nichts enthalten sein wird sollte.

Vorbehalt: Dies ist keineswegs eine umfassende oder vollständige Lösung, aber es ist ein guter Ausgangspunkt, abhängig davon, wie Ihre tatsächlichen Eingabedaten aussehen.

+0

danke für die gute Antwort, ich aktualisierte meine Frage – david

Verwandte Themen