Need Regex, um Schlüsselwort = 'Wert' mit einfachen oder doppelten Anführungszeichen zu analysieren

8

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%     
Doug Kaye 07.06.2009, 15:39
quelle

3 Antworten

14

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.

    
Copas 07.06.2009, 15:52
quelle
4
%Vor%

Der Schlüssel wird in und der Wert in platziert.

    
Nietzche-jou 07.06.2009 17:18
quelle
1

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.

    
Twifty 15.05.2014 03:55
quelle

Tags und Links