ReplaceAll + Regex zum cleanen von HTML

Andyx1975

Mitglied
Hallo,

ich möchte HTML Tags bereiningen hierzu muss ich eine Methode schreiben, die bestimmte Inhalte aus Tags entfernt. Ein Bsp ist:


<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: justify; mso-layout-grid-align: none;">


hier will ich folgendes entfernen:
- class="MsoNormal"
- style="margin: 0cm 0cm 0pt; text-align: justify; mso-layout-grid-align: none;"

Es soll also nur noch <p> übrig bleiben.

Hierzu bin ich wie folgt vorgegeben:

Java:
public void checkHTML(String txt) 
{
		System.out.println("Original text: " + txt);
		txt.replaceAll("style=\"*?\"", "");
		txt.replaceAll("class=\"*?\"", "");		
                System.out.println("Replaced text: " + txt);
}


Leider passiert nichts...hat hier jemand eine Idee? Danke******
 
Hallo,

danke für dein Feedback...habe es jetzt wie folgt probiert:

txt.replaceAll("style=.*?\"", " ");
txt.replaceAll("class=.*?\"", " ");

und

txt.replaceAll("style=".*?\"", " ");
txt.replaceAll("class=".*?\"", " ");

beide Varianten haben nicht funktioniert. Was könnte es noch sein?
 
hallo honniCilest....danke für den Hinweis...das hat jetzt auch schonmal funktioniert. Leider funktionieren die Regex Ausdrücke noch nicht...es kürz wie folgt ab:

Ursprung:
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: justify; mso-layout-grid-align: none;">

Ergebnis:
<p MsoNormal" style="margin: 0cm 0cm 0pt; text-align: justify; mso-layout-grid-align: none;">

Es wird also nur class=" entfernt...weiss hier noch jemand rat?

Danke
Andy
 
Wenn ich mich nicht irre, so müsste dein regex so aussehen (du brauchst auch nur eine Zeile):
Java:
txt = txt.replaceAll("(style|class)=\".*?\""," ");
 
Zuletzt bearbeitet:
Leider war das noch nicht ganz richtig...aber danke du hast mir schon sehr viel weiter geholfen. Mit dem folgenden Regex bekomme ich das folgende Ergebnis:


Regex:
txt = txt.replaceAll("(?:class|style|[ovwxp]:\\w+)=\".*?\"","");

Ergebnis
<p >

Jetzt muss ich nur noch die zwei Leerzeichen vor dem "<" weg bekommen.
 
du weisst nicht zufällig wie ich den folgenden ausdruck erweitern muss, damit er das Leerzeichen mit entfernt...ich hab da schon einige kombis ausprobiert. Dann funktioniert der Regex nur nicht mehr.
 
du weisst nicht zufällig wie ich den folgenden ausdruck erweitern muss, damit er das Leerzeichen mit entfernt...ich hab da schon einige kombis ausprobiert. Dann funktioniert der Regex nur nicht mehr.

txt = txt.replaceAll("LEERZEICHEN(?:class|style|[ovwxp]:\\w+)=\".*?\"","");

Da, ein einfaches Leerzeichen eingeben, ich hab' es nur ausgeschrieben, damit man es genau sieht :)
Ansonsten hast du noch folgende Möglichkeit:
\s : whitespace meistens das Leerzeichen und die Klasse der Steuerzeichen \f, \n, \r, \t und \v
Hier musst du allerdings \\s statt \s schreiben bei Java...
 
Zuletzt bearbeitet:
Zurück