2 Stimmen

Regexp: alle Tags aus der Zeichenkette entfernen, außer einer bestimmten Art von Tags

Ich habe einen solchen String

<p>test <span class=\"match\">match</span> <span class=\"testtes\">dddddd</span></p>

Ich möchte einen String ohne Tags erhalten. Aber ich möchte die Hervorhebung nach Klasse speichern "match" :

test <span class=\"match\">match</span> dddddd

Wenn ich nur alle Tags entfernen möchte, ersetze ich alle Teilzeichenfolgen, die regexp erfüllen /<\/?[^>]*>/ durch eine leere Zeichenkette. Aber welche Regexp sollte ich in meinem speziellen Fall verwenden?

UPD: Der Algorithmus lautet: Wenn Sie einen Satz ohne Tags sehen, dann sollten Sie diese Abschnitte nicht entfernen; ansonsten sollten Sie alle Tags entfernen.

2 Stimmen

Kombinieren Sie keine Regex mit html !

1 Stimmen

0voto

stema Punkte 85725

Ich könnte etwas wie das hier tun

<\/?(?![^>]*class=\\"match)[^>]*>

Dies würde das Eröffnungs-Tag beibehalten und zu folgendem Ergebnis führen

test <span class=\"match\">match dddddd

Siehe es hier auf Regexr

Aber wie soll ich den passenden schließenden Tag finden?

<p>test <span class=\"match\">match</span> <span class=\"testtes\">dddddd</span></p>
                                   ^^^^^^^          or the next one?     ^^^^^^^

Regex kann nicht wissen, welcher schließende Tag zum öffnenden gehört <span> Tag, der diese Klasse enthält. Ich habe nicht die Möglichkeit, passende schließende Tags zu finden. Daher ist es keine gute Idee, dies mit Regex zu tun.

Ich bin mir ziemlich sicher, dass die von Ihnen verwendete Sprache über einen HTML-Parser verfügt, der für diese Aufgabe verwendet werden kann.

0 Stimmen

Ich dachte, wenn ich so etwas wie einen endlichen Zustandsautomaten realisieren kann, dann kann ich einen solchen RegExp schreiben. Der Algorithmus ist: wenn Sie sehen <span class=\"match\"> und einige Sätze ohne Tags und dann </span> dann sollten Sie diese Abschnitte nicht entfernen; andernfalls sollten Sie alle Tags entfernen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X