Ein regulärer Ausdruck für HTML-Sonderzeichen

turmaline

Bekanntes Mitglied
Hallo Leute,

ich brauche einen regulären Ausdruck für HTML-Sonderzeichen. Hier ist das was ich selber gemacht habe aber ich bin mir nicht sicher dass es richtig ist (habe mit regex keine Erfahrung):

"&(a-zA-Z_0-9)*?;"

Es fehlt darin das "#"-Zeichen oder?

Ich muss die HTML-Zeichen _nicht_ ersetzen, sondern ich zeige einen String an und damit dieser abgebrochen wird, wenn er zu lang ist wird alle 20 Zeichen ein kleines Leehrzeichen (hair space) eingefügt. Dieses hair space wird gelegentlich auch in einem HTML-Sonderzeichen eingefügt was dessen korrektes Anzeigen verhindert. Das darf nicht passieren. Hier ist meine kleine Hilfs-Methode:
Java:
private List<List<Integer>> findHTMLSpecialCharacters(String str) {
		List<List<Integer>> positions = new ArrayList<ArrayList<Integer>>();
		Pattern p = Pattern.compile("&(a-zA-Z_0-9)*?;");
		Matcher m = p.matcher (str);
		while(m.find()) {
			ArrayList<Integer> pos = new ArrayList<Integer> ();
			pos.add (m.start());
			pos.add (m.end());
			positions.add(pos)
		}
		return positions;
	}

Kann mir jemand mit dem regulären Ausdruck helfen?

Gruß,
madlena
 
hast du denn keine belastbare Menge an HTML-Code zum Testen?
funktioniert es nicht schon oder gibt es ein konkretes Problem?
ob # nötig ist und ob das dann funktioniert läßt sich doch alles testen?

----

übrigens wäre [c]new ArrayList<List<Integer>>();[/c] etwas sauberer, oder wie wärs mit [c]new ArrayList<int[]>();[/c]
sind doch immer nur zwei Positionen im Inneren
 
Vielen Dank für die Antworten!

so habe ich zum Schluss gemacht:

"&#?[a-zA-Z_0-9\\-]+;"

war aber umsonst, da decodeHTML und bei der Rückgabe vom String encodeAsHTML (groovy Standart-Methoden) hat gereicht. In Java gibt es ja auch Methoden die das machen.
 

Zurück
Oben