Regex – Übereinstimmungsattribut in einem HTML-Code [duplicate]

Lesezeit: 2 Minuten

Tonys Benutzeravatar
Toni

Ich habe ein Problem mit dem Abgleich der HTML-Attribute (in verschiedenen HTML-Tags) mit Regex. Dazu verwende ich das Muster:

myAttr=\"([^']*)\"

HTML-Schnipsel:

<img alt="" src="https://stackoverflow.com/questions/7671925/1-p2.jpg" myAttr="http://example.com" class="alignleft" />

es wählt Text aus dem aus myAttr das Ende /> aber ich muss die auswählen myAttr="..." (“http://beispiel.com“)

Benutzeravatar von Ray Toal
Ray Total

Sie haben ein Apostroph (') in deiner Zeichenklasse, aber du wolltest ein Zitat (").

myAttr=\"([^"]*)\"

Das heißt, Sie sollten HTML wirklich nicht mit regulären Ausdrücken analysieren. (Entschuldigung für die Verlinkung das nochmal antworten. Es gibt andere Antworten auf diese Frage, die eher von der Sorte “Wenn Sie wissen, was Sie tun …” sind. Aber es ist gut, sich dessen bewusst zu sein.)

Beachten Sie, dass Sie viel zu beachten haben, selbst wenn Sie Ihre regulären Ausdrücke nur auf Attribute beschränken:

  • Achten Sie darauf, keine Übereinstimmungen innerhalb von Kommentaren zu finden.
  • Achten Sie darauf, dass Sie nicht innerhalb von CDATA-Abschnitten übereinstimmen.
  • Was ist, wenn Attribute in einfache Anführungszeichen statt in doppelte Anführungszeichen gesetzt werden?
  • Was ist, wenn Attribute überhaupt keine Anführungszeichen haben?

Aus diesem Grund werden im Allgemeinen vorgefertigte, seriöse Parser benötigt.

Das * ist ein gieriger Quantifizierer. Sie sollten ihm ein Fragezeichen folgen lassen, um ihn nicht gierig zu machen:

myAttr=\"([^']*?)\"

Benutzeravatar von Laurent
Laurent’

Wenn Sie nur den myAttr-Parameter möchten Wertbenutze das:

"myAttr=\"([^\"]+)\""

Sie können versuchen, das zu verwenden

 myAttr=\"?[\w:\-]+ ?= ?("[^"]+"|'[^']+'|\w+)\"

<[^>]*>

Versuchen Sie einfach, dies ist diese Hilfe zum Entfernen aller Tags

Beispiel Etwas

  • Hast du die Frage gelesen?

    – Toto

    7. März 2017 um 9:39 Uhr

  • Hast du die Frage gelesen?

    – Toto

    7. März 2017 um 9:39 Uhr

1441620cookie-checkRegex – Übereinstimmungsattribut in einem HTML-Code [duplicate]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy