Regex - Übereinstimmungsattribut in einem HTML-Code [duplizieren]

8

Ich habe Probleme mit den HTML-Attributen (in verschiedenen HTML-Tags) mit Regex. Dazu benutze ich das Muster:

%Vor%

HTML-Auszug:

%Vor%

es wählt Text aus dem myAttr das Ende /> aus, aber ich muss das myAttr="..." auswählen (" Ссылка ")

    
Tony 06.10.2011, 08:35
quelle

5 Antworten

18

Sie haben einen Apostroph ( ' ) in Ihrer Zeichenklasse, aber Sie wollten ein Zitat ( " ).

%Vor%

Das heißt, Sie sollten nicht t analysieren HTML mit Regexes . (Es tut uns leid, wieder auf das zu antworten. Es gibt andere Antworten auf diese Frage, die mehr von der "Wenn du weißt, was du tust ..." Abwechslung. Aber es ist gut zu wissen .)

Beachten Sie, dass Sie selbst dann, wenn Sie Ihre Regexing auf Attribute beschränken, viel zu beachten haben:

  • Passen Sie auf, dass Sie nicht innerhalb von Kommentaren übereinstimmen.
  • Achten Sie darauf, dass die CDATA-Abschnitte nicht übereinstimmen.
  • Was passiert, wenn Attribute in einfache Anführungszeichen statt in doppelte Anführungszeichen eingeschlossen werden?
  • Was ist, wenn Attribute überhaupt keine Anführungszeichen haben?

Aus diesem Grund sind im Allgemeinen vorgefertigte, ernsthafte Parser erforderlich.

    
Ray Toal 06.10.2011, 08:38
quelle
4

Der * ist ein gieriger Quantifizierer. Sie sollten es mit einem Fragezeichen verfolgen, um es nicht gierig zu machen:

%Vor%     
John Keyes 06.10.2011 08:38
quelle
2

Wenn Sie nur den myAttr-Parameter value möchten, verwenden Sie Folgendes:

%Vor%     
Laurent' 06.10.2011 08:39
quelle
0

Sie können versuchen, das zu verwenden

%Vor%     
Merianos Nikos 06.10.2011 08:40
quelle
0

& lt; [^ & gt;] * & gt;

Versuchen Sie es einfach mit dieser Hilfe zum Entfernen aller Tags

Beispiel etwas

    
user7671441 07.03.2017 09:34
quelle

Tags und Links