Esiste l'espressione regolare che può rimuovere completamente un tag HTML? A proposito, sto usando Java.Come rimuovere il tag HTML in Java
risposta
È consigliabile utilizzare un parser HTML. Mi piace htmlCleaner, perché mi dà una versione stampata dell'HTML.
Con htmlCleaner si può fare:
TagNode root = htmlCleaner.clean(stream);
Object[] found = root.evaluateXPath("//div[id='something']");
if(found.length > 0 && found instanceof TagNode) {
((TagNode)found[0]).removeFromTree();
}
Grazie per avermi indirizzato a htmlCleaner :) – exhuma
Abbiamo bisogno di ottenere qualsiasi libreria in ordine per utilizzare questo codice sopra? E root.evaluateXPath ("// div [id = 'something']"); in questo "qualcosa" potrebbe esserci qualche rito? Per favore mi faccia sapere. grazie –
No. Le espressioni regolari non può, per definizione, di analisi HTML.
È possibile utilizzare un'espressione regolare a s/<[^>]*\>//
o qualcosa di simile in questo modo, ma sarà insufficiente, soprattutto se si è interessati a rimuovere il contenuto dei tag.
Come un altro poster ha detto, utilizzare un parser HTML effettivo.
Se avete solo bisogno di rimuovere i tag quindi è possibile utilizzare questa espressione regolare:
content = content.replaceAll("<[^>]+>", "");
Sarà rimuovere solo i tag, ma non altre cose HTML. Per cose più complesse dovresti usare parser.
EDIT: Per evitare problemi con commenti HTML è possibile effettuare le seguenti operazioni:
content = content.replaceAll("<!--.*?-->", "").replaceAll("<[^>]+>", "");
Dato che non si usano nessuno dei caratteri di carne '.','^'e' $', i flag 's'- e' m' possono essere omessi. –
Questa espressione regolare è suscettibile di provocare il mangling se l'HTML contiene commenti XML con caratteri "<' or '>" incorporati. –
In alternativa, se il vostro intento è quello di visualizzazione ingresso controllato dall'utente al client, allora si può anche è sufficiente sostituire tutti gli <
entro il <
e tutti gli >
entro il >
. In questo modo l'HTML non verrà interpretato così com'è dall'applicazione del client (il browser).
Se si utilizza JSP come tecnologia di visualizzazione, è possibile utilizzare JSTL c:out
per questo. Per impostazione predefinita, sfuggirà a tutte le entità HTML. Ad esempio, per esempio
<c:out value="<script>alert('XSS');</script>" />
NON visualizza l'avviso, ma mostra semplicemente la stringa attuale così com'è.
è possibile utilizzare questo semplice codice per rimuovere tutti i tag html ...
htmlString.replaceAll("\\<.*?\\>", ""))
Questo rimuoverà solo i tag di apertura e lascerà i tag di chiusura non gestiti. – jlordo
non avrei mai fatto un lavoro del genere per conto mio - l'analisi di html in testo semplice è davvero un lavoro tizio .. – jebbie
Ha funzionato per me ma forse dipende dalla complessità dei tag, commenti, script, ecc. Quindi, per un caso complesso forse una libreria html dovrebbe essere migliore. – jmoran
C'è JSoup che è una libreria Java per la manipolazione fatta HTML. Guarda il metodo clean()
e l'oggetto WhiteList
. Soluzione facile da usare!
WOW, signore, mi hai davvero dedicato la giornata, mi piace, SÌ! Markdownj, Markdown4J, htmlCleaner .. tutti sono ***** scusate .. JSoup è l'unico e solo dove lo realizzi davvero con una sola riga: String plain = new HtmlToPlainText(). GetPlainText (Jsoup.parse (html)); – jebbie
Un codice più corto sarebbe 'String plaintext = Jsoup.parse (html) .text();' – jrarama
@jrarama - Niente affatto. 'Jsoup.parse (html) .text()' rimuove tutti i tag e gli spazi bianchi, lasciando solo una lunga singola riga di testo, mentre 'new HtmlToPlainText(). GetPlainText (Jsoup.parse (html))' formatta il formato testo in modo semplicistico, mantenendo interruzioni di riga, paragrafi, punti elenco, ecc. – isapir
Non è necessario alcun parser HTML. Il codice di seguito rimuove tutti i commenti HTML:
htmlString = htmlString.replaceAll("(?s)<!--.*?-->", "");
- 1. Come rimuovere un tag HTML con PHPQuery?
- 2. Rimuovere alcuni tag HTML con RegExp e Java
- 3. Rimuovere/sostituire tag html in bash
- 4. Java Rimuovere vuoti tag XML
- 5. rimuovere determinati attributi dai tag HTML
- 6. Come posso rimuovere tutti i tag html da un array?
- 7. Come posso rimuovere gli attributi da un tag html?
- 8. Netti tag HTML in html
- 9. Tag Hr in IE - rimuovere il bordo
- 10. Come rimuovere il tag blacklist per l'estensione?
- 11. Tag escape in html
- 12. utilizzando python, rimuovere i tag HTML/formattazione da una stringa
- 13. PHP espressione regolare per rimuovere i tag nel documento HTML
- 14. Rimuovi tag HTML in stringa
- 15. rimuovere i tag HTML da stringhe di celle: excel Formula
- 16. Come analizzare e modificare il file HTML in Java
- 17. Come rimuovere il testo tra i tag in PHP?
- 18. Backbone js: come rimuovere il tag extra in vista?
- 19. Come rimuovere il tag info da VRPanorama Visualizza in android
- 20. Rimuovere tag vuoti con interruzioni di riga da HTML
- 21. espressione regolare per rimuovere i tag HTML da una stringa
- 22. rimuovere i tag HTML da stringhe sulla lama laravel
- 23. Come rimuovere tag da una stringa in python usando le espressioni regolari? (NON in HTML)
- 24. Come scrivere tag HTML in "link" CakePHP
- 25. Come utilizzare i tag HTML in JTextArea
- 26. Come registrare tag html personalizzati in Resharper?
- 27. Come trovate tag non corrispondenti in HTML?
- 28. Yii2 come mappare il tag di ancoraggio HTML nel tag yii2 html :: a()
- 29. Come posso mostrare il testo con tag html in primefaces
- 30. Come ottenere il tag title in una stringa di html?
Digitando il titolo nella casella di ricerca, ho ottenuto il seguente: http://stackoverflow.com/search?q=How+to+remove+HTML+tag + in + Java ... non hai ottenuto lo stesso mentre stavi postando la domanda? – kdgregory
Non ho trovato duplicati. Queste domande riguardano l'estrazione di testo da HTML: http://stackoverflow.com/questions/240546/removing-html-from-a-java-string http: // stackoverflow.it/questions/832620/stripping-html-tags-in-java – tangens