Lookbehind-Problem im regulären Ausdruck

9

Ich benutze

%Vor%

entspricht Zeichenfolge wie ## MyString ## , die nicht die Form von

hat %Vor%

Dies funktioniert für das obige Formular, aber nicht dafür: (Es passt immer noch, sollte nicht übereinstimmen)

%Vor%

Ich habe es versucht:

%Vor%

ohne Glück. Alle Vorschläge werden sehr geschätzt.

Bearbeiten: Ich benutze PHP preg_match () Funktion

    
Ali Selcuk 05.02.2010, 23:50
quelle

3 Antworten

4

Dies ist nicht perfekt (dafür gibt es HTML-Parser), aber es wird für die meisten HTML-Dateien funktionieren:

%Vor%

Die Idee ist einfach. Sie suchen nach einer Zeichenfolge außerhalb von Tags. Um außerhalb der Tags zu sein, muss die nächste vorausgehende angewinkelte Klammer geschlossen sein (oder es gibt überhaupt keine Klammer), und die nächstfolgende muss sich öffnen (oder keine). Dies setzt voraus, dass in Attributwerten keine spitzen Klammern verwendet werden.

Wenn es Ihnen wirklich wichtig ist, dass der Attributname "value" ist, dann können Sie nach:

suchen %Vor%

... und dann einfach die Übereinstimmung negieren ( !preg_match(...) ).

    
Max Shawabkeh 06.02.2010, 05:14
quelle
1

@OP, Sie können es einfach ohne Regex tun.

%Vor%     
ghostdog74 06.02.2010 01:02
quelle
0

hier ist zumindest ein Startpunkt, es funktioniert für die gegebenen Beispiele.

%Vor%     
Paul Creasey 06.02.2010 00:07
quelle

Tags und Links