Toon posts:

JAVA Regular expressions probleem

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik wil graag van de source code van een webpagina alle html rotzooi weghalen, dit lukt als ik alles wat tussen <> staat kan verwijderen van de pagina. Ik ben er al achter dat ik dit het beste kan doen met regular expressions. Ik snap alleen niet helemaal hoe ze werken.
Als ik een string heb:
aaaaAAfds<td>dddddd</td>

en ik gebruik:
.replaceAll("<.*>", "_");

Dan geeft hij terug aaaAAfds_ en verder niks. Hij pakt steeds de eerste <, en de laatste >, en alles daartussen haalt hij weg.
Dit heeft iets te maken met de * denk ik, aangezien dit een onbepaald aantal characters is.
Iemand een idee hoe ik dit kan oplossen?

  • Nick_S
  • Registratie: Juni 2003
  • Laatst online: 22-04 03:55

Nick_S

++?????++ Out of Cheese Error

Even gezocht op Google met java replaceall tags en daar kwam dit uit:

code:
1
String string = string.replaceAll("(?s)\\<.*?\\>","");


Van de java developers forum. Ik heb het niet getest, maar probeer het eens zou ik zeggen.

'Nae King! Nae quin! Nae Laird! Nae master! We willna' be fooled agin!'


  • Varienaja
  • Registratie: Februari 2001
  • Laatst online: 14-06-2025

Varienaja

Wie dit leest is gek.

Hij zal wel greedy aan het zoeken zijn, terwijl je in dit geval juist niet greedy wilt zoeken. Meestal kan je dat opgeven door met een karakter in de regexp. Ik zou zeggen: zoek daar even op. Ik weet het zelf helaas niet uit m'n hoofd.

Siditamentis astuentis pactum.


  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

of je gebruikt gewoon geen .*:

code:
1
"<[^>]+>"

All my posts are provided as-is. They come with NO WARRANTY at all.


  • JaWi
  • Registratie: Maart 2003
  • Laatst online: 14-01 21:58

JaWi

maak het maar stuk hoor...

Hmmz, aangezien de '>' volgens de HTML-standaard alleen in tags mag voorkomen, kun je beter de volgende regex gebruiken, ipv de 'dot-star' oplossing (in het kader van de "betere" performance):
Java:
1
String result = line.replaceAll("(?s)<[^>]+>", "");

edit:
te laaaat...

[ Voor 20% gewijzigd door JaWi op 12-10-2005 14:14 ]

Statistics are like bikinis. What they reveal is suggestive, but what they hide is vital.


  • Glabbeek
  • Registratie: Februari 2001
  • Laatst online: 28-04 13:45

Glabbeek

Dat dus.

Java:
1
System.out.println(a.replaceAll("<[^>]*>", "_"));

Oftwel, selecteer alle characters na de < behalve de >, gevolgd door de >. Anders selecteer je alles tussen de eerste < en de laatste >.

edit:

Tsjee, wat is iedereen snel... :)

[ Voor 27% gewijzigd door Glabbeek op 12-10-2005 14:15 ]

En zo is het maar net.


Verwijderd

Topicstarter
Het werkt perfect! Hartstikke bedankt voor de snelle reacties. (op een van de eerste reacties, ik had wel geprobeerd te googlen maar wist niet precies waarop)
Pagina: 1