Gibt es den regulären Ausdruck, der ein HTML-Tag vollständig entfernen kann? Übrigens verwende ich Java.Wie HTML-Tag in Java entfernen
Antwort
Sie sollten stattdessen einen HTML-Parser verwenden. Ich mag htmlCleaner, weil es mir eine hübsche gedruckte Version des HTML gibt.
Mit htmlCleaner können Sie tun:
TagNode root = htmlCleaner.clean(stream);
Object[] found = root.evaluateXPath("//div[id='something']");
if(found.length > 0 && found instanceof TagNode) {
((TagNode)found[0]).removeFromTree();
}
Vielen Dank für mich auf htmlCleaner :) – exhuma
Brauchen wir irgendeine Bibliothek in Ordnung, um diesen obigen Code zu verwenden? Und root.evaluateXPath ("// div [id = 'etwas']"); in diesem "etwas" könnte jeder id rite sein? lass es mich wissen, bitte. Danke –
Nr Reguläre Ausdrücke können nicht per definitionem Parsing HTML.
Sie könnten eine Regex zu s/<[^>]*\>//
oder etwas naives so verwenden, aber es wird nicht ausreichen, vor allem, wenn Sie daran interessiert sind, den Inhalt von Tags zu entfernen.
Wie ein anderes Plakat sagte, verwenden Sie einen tatsächlichen HTML-Parser.
Wenn Sie müssen nur Tags entfernen, dann können Sie diesen regulären Ausdruck verwenden:
content = content.replaceAll("<[^>]+>", "");
Es wird nur Tags entfernen, aber nicht andere HTML-Sachen. Für komplexere Dinge sollten Sie Parser verwenden.
EDIT: Um Probleme mit HTML zu vermeiden Kommentare, die Sie folgendes tun:
content = content.replaceAll("<!--.*?-->", "").replaceAll("<[^>]+>", "");
Da Sie keine der Fleischzeichen '.', '^' und '$' verwenden, können die 's'- und' m'-Flags weggelassen werden. –
Diese Regex kann Mangeln verursachen, wenn der HTML-Code XML-Kommentare mit eingebetteten '<' or '>'-Zeichen enthält. –
Alternativ, wenn Ihre Absicht zu Anzeige benutzergesteuerten Eingang zurück an den Client ist, können Sie dann können auch ersetzen Sie einfach alle <
durch <
und alle >
durch >
. Auf diese Weise wird der HTML-Code nicht so interpretiert, wie er von der Client-Anwendung (dem Webbrowser) interpretiert wird. Wenn Sie JSP als Ansichtstechnologie verwenden, können Sie JSTLs c:out
dafür verwenden. Es wird standardmäßig alle HTML-Entities verlassen. So zum Beispiel
<c:out value="<script>alert('XSS');</script>" />
wird nicht die Warnung anzeigen, aber zeigen Sie die tatsächliche Zeichenfolge wie sie ist.
Sie diesen einfachen Code verwenden können alle HTML-Tags entfernen ...
htmlString.replaceAll("\\<.*?\\>", ""))
Dadurch werden nur öffnende Tags entfernt und die abschließenden Tags nicht behandelt. – jlordo
ich würde nie einen Job so allein machen - Parsing HTML in Klartext ist wirklich ein Job, aber Typ .. – jebbie
Es funktionierte für mich, aber vielleicht hängt von der Komplexität der Tags, Kommentare, Skripte usw. Also, Für einen komplexen Fall sollte vielleicht eine HTML-Bibliothek besser sein. – jmoran
Es gibt JSoup, die eine Java-Bibliothek für die HTML-Manipulation gemacht ist. Sehen Sie sich die clean()
Methode und das WhiteList
Objekt an. Einfach zu bedienende Lösung!
WOW, Sir, ich habe wirklich meinen Tag gemacht, ich mag das, JA! Markdownj, Markdown4J, htmlCleaner .. alle von ihnen ist ***** Entschuldigung .. JSoup ist die einzige, wo Sie wirklich das mit einem Einzeiler erreichen: String plain = neu HtmlToPlainText(). GetPlainText (Jsoup.parse (html)); – jebbie
Ein kürzerer Code wäre 'String plaintext = Jsoup.parse (html) .text();' – jrarama
@jrarama - Überhaupt nicht. 'Jsoup.parse (html) .text()' entfernen Sie alle Tags und Leerzeichen, so dass Sie nur eine lange Zeile Text haben, während 'new HtmlToPlainText(). GetPlainText (Jsoup.parse (html))' formatiert Text auf einfache Art und Weise, Zeilenumbrüche, Absätze, Aufzählungszeichen usw. – isapir
Sie benötigen keinen HTML-Parser. Der Code unten entfernt alle HTML-Kommentare:
htmlString = htmlString.replaceAll("(?s)<!--.*?-->", "");
- 1. entfernen Dateierweiterung in Java
- 2. Wie Teil der Zeichenfolge in Java entfernen?
- 3. Wie entfernen Kontextpfad in Java-Anwendung
- 4. Junk-Zeichen entfernen in Java
- 5. Entfernen von Knoten in LinkedList in Java
- 6. Entfernen Komma Methode Java
- 7. Entfernen String auf java
- 8. java entfernen JMenuBar
- 9. Java Entfernen Unicode-Zeichen
- 10. Wie Audio von Video Android Java entfernen
- 11. Java/SWT/Wie Frame aus Schaltfläche entfernen
- 12. Entfernen Kontur mit Marvin-Framework in Java
- 13. entfernen Allfile-Option in jFilechosser Java
- 14. benötigen in java letztes Komma entfernen
- 15. Wie Header aus der Serverantwort in Java entfernen?
- 16. Wie bestimmte Seite aus Word-Dokument in Aspose Java entfernen?
- 17. Wie Ljava.lang.String aus einem Kombinationsfeld in Java entfernen?
- 18. Wie entfernen Sie ein Cookie in einem Java-Servlet
- 19. wie unbenutzte Klasse in Java-Projekt zu entfernen?
- 20. Wie man Compiler-Optimierungen in Java-Eclipse entfernen?
- 21. Wie das letzte Zeichen des Zeichenfolgenpuffers in Java entfernen?
- 22. wie Duplikate in einem Integer-Array entfernen? mit Java
- 23. Wie HTTP-Header aus CURL-Antwort in Java entfernen
- 24. Entfernen Sie überflüssige Umwandlungen in Java
- 25. Java - Tag aus xml Entfernen
- 26. Bedenken mit Listiterator entfernen Java
- 27. Wie "@ 8" Suffix in DLL-Datei entfernen
- 28. wie Schaltfläche Entfernen in Combobox
- 29. Entfernen Sie doppelte Zeichen in einer Zeichenfolge in Java
- 30. Entfernen von PDF-Metadaten mit Java
Typing Ihren Titel in das Suchfeld ein, ich habe folgende Möglichkeiten: http://stackoverflow.com/search?q=How+to+remove+HTML+tag + in + Java ... hast du nicht dasselbe bekommen als du die Frage gepostet hast? – kdgregory
Ich habe keine Duplikate gefunden. Diese Fragen interessieren sich für das Extrahieren von Text aus HTML: http://stackoverflow.com/questions/240546/removing-html-from-a-java-string http: // stackoverflow.com/questions/832620/stripping-html-tags-in-java – tangens