Sie nicht mit Regex zu analysieren HTML versuchen sollte. HTML ist keine reguläre Sprache, daher wird jede Regex, die Ihnen auffällt, wahrscheinlich in einem esoterischen Edge Case fehlschlagen. Bitte beachten Sie die grundlegende Antwort auf this question für Details. Obwohl es meistens als Witz formatiert ist, ist es ein sehr guter Punkt.
Die folgenden Beispiele sind Java, aber die regex wird ähnlich sein - wenn nicht identisch - für andere Sprachen.
String target = someString.replaceAll("<[^>]*>", "");
Angenommen, Ihre Nicht-HTML enthält keine < oder> und dass Ihre Eingabe Zeichenfolge richtig strukturiert ist.
Wenn Sie wissen, dass sie ein bestimmtes Tag sind - zum Beispiel wissen, dass Sie den Text nur <td>
-Tags enthält, können Sie etwas tun könnte:
String target = someString.replaceAll("(?i)<td[^>]*>", "");
Edit: Ωmega brachte einen guten Punkt in ein Kommentar zu einem anderen Beitrag, dass dies zu mehreren Ergebnissen führen würde, die alle zusammengestaucht würden, wenn mehrere Tags vorhanden wären. Wenn die Eingabezeichenfolge <td>Something</td><td>Another Thing</td>
lautet, würde das obige Ergebnis SomethingAnother Thing
ergeben.
In einer Situation, wo mehrere Tags zu erwarten sind, wir so etwas wie tun könnte:
mit einem einzigen Raum
String target = someString.replaceAll("(?i)<td[^>]*>", " ").replaceAll("\\s+", " ").trim();
Dies ersetzt die HTML, kollabiert dann Leerzeichen, und dann trimmt jede an den Enden.
Ist das die Saite, die ganze Saite und nichts als die Saite? Wenn ja, wie wäre es mit '\ d +'? – Ryan
Ich verwende so etwas: '(?:. +? | . +? | <(?:! | /? [A-zA-Z] +). *? /?>)' und Ersetzen durch "" ". –
Wenn Sie diese Frage lesen, *** bitte *** lesen Sie die angenommene Antwort für das Duplikat. Die beiden oberen Antworten sind beide anfällig für eine sehr einfache Eingabe. TL; DR: Reguläre Ausdrücke sind *** nicht nützlich zum korrekten Entfernen von HTML-Tags. –