Ich habe Probleme beim Schreiben eines regulären Ausdrucks (passend für PHP's preg_match ()), der Schlüsselwort = 'Wert' Paare parsen wird, egal ob der & lt; Wert & gt; Die Zeichenfolge ist in einfache oder doppelte Anführungszeichen eingeschlossen. IOW in beiden folgenden Fällen muss ich den & lt; name & gt; und & lt; Wert & gt; wo der & lt; Wert & gt; string kann die nicht umschließende Art von Anführungszeichen enthalten:
%Vor%In Perl ist dies ein regulärer Ausdruck, der funktionieren würde. Es stimmt zuerst mit dem Anfang der Zeile überein, stimmt dann mit einem oder mehreren Nicht-Zeichen überein und setzt sie auf $ 1. Als nächstes sucht es nach dem = dann dem a nicht Klammern mit einer Auswahl von passend für "oder" und setzt das auf $ 2.
%Vor%Wenn Sie möchten, dass leere Ausdrücke wie.
Dies=""
Ersetze die letzten beiden + durch ein * Ansonsten sollte das funktionieren
Bearbeiten Wie in den Kommentaren erwähnt. Doug benutzt ...
%Vor%Dies entspricht einem optionalen Leerraum am Ätherende der Eingabe oder des Werts und er hat die Ende der Zeilenmarkierung entfernt.
Ein paar Jahre zu spät, aber da diese Frage bei Google sehr hoch ist und die Antworten meine Bedürfnisse nicht befriedigen, ist hier ein weiterer Ausdruck :
%Vor%Dies entspricht einfachen oder doppelten Anführungszeichen unter Berücksichtigung von Escape-Anführungszeichen und nicht aufgeführten Werten.
%Vor%Es gibt jedoch eine Einschränkung darin, dass, wenn ein Wert fehlt, der Schlüssel aus dem nächsten Schlüssel / Wert-Paar gelesen wird. Dies kann mithilfe einer durch Kommas getrennten Liste von Schlüssel / Wert-Paaren behoben werden.
Tags und Links quotes regex preg-match