JS regulärer Ausdruck, um einen Teilstring in Anführungszeichen zu finden

8

Ich muss einen Teilstring finden, der von doppelten Anführungszeichen umgeben ist, wie zum Beispiel "test" , "te\"st" oder "" , aber nicht """ weder "\". Um dies zu erreichen, ist dies der beste Weg, dies im folgenden zu tun.

%Vor%

Ich wurde diese Frage gestern in einem Interview gestellt und würde gerne die Antwort für zukünftige Referenzen wissen.

    
2619 14.03.2013, 07:56
quelle

3 Antworten

2

Diese Ausdrücke werden wie folgt ausgewertet:

Ausdruck 1 entspricht:

  • Ein Hochkomma
  • Gierig ein beliebiges Zeichen, einschließlich eines Anführungsstrichs oder eines Schrägstrichs
  • Ein letztes Hochkomma.

Dies entspricht "test" some wrong text "text" und schlägt daher fehl

Ausdruck 2 entspricht:

  • Ein Hochkomma
  • Gierig wie viele Zeichen, die weder ein Anführungszeichen noch ein Schrägstrich sind
  • Gierig wie viele Sätze
    • Jeder Buchstabe, dem ein Schrägstrich vorangestellt ist
    • Gierig wie viele Zeichen, die weder ein Anführungszeichen noch ein Schrägstrich sind
  • Ein letztes Hochkomma

Damit werden alle Zeichen innerhalb der Anführungszeichen in Sätzen gesammelt und durch Schrägstriche unterbrochen. Es schließt ausdrücklich ein Anführungszeichen aus, wenn ihm ein Schrägstrich vorangestellt wird, indem es in alle nachfolgenden Mengen eingefügt wird. Das wird funktionieren.

Ausdruck 3 stimmt überein:

  • Ein Hochkomma
  • So wenige Sätze wie möglich von:
    • Ein beliebiges Zeichen, dem ein optionaler Schrägstrich vorangestellt ist
  • Ein letztes Hochkomma

Dies sammelt alle Zeichen, optional mit einem Schrägstrich vorangestellt, aber nicht gierig. Das wird funktionieren

Ausdruck 4 entspricht:

  • Ein Hochkomma
  • Gierig alle Zeichen, die entweder kein Anführungszeichen oder ein Schrägstrich sind
  • Eines oder mehrere von:
    • Ein Anführungszeichen oder
    • Ein Schrägstrich und ein beliebiges Zeichen

Dies entspricht "test"\x und schlägt daher fehl

Fazit:

Von dem, was ich sagen kann, funktionieren beide Ausdrücke 2 und 3. Ich habe vielleicht etwas verpasst, aber beide werden sicherlich (oder nicht angemessen) für die gegebenen Beispiele funktionieren. Die Frage ist also: Was ist besser? Ich würde für drei wählen, weil es einfacher ist.

    
Gareth Cornish 14.03.2013, 09:15
quelle
0

Sie könnten auch mit diesem einfacheren Typ durchkommen:

%Vor%

Ссылка

    
Chris Moschini 07.04.2013 23:41
quelle
0

Deine Grammatik ist ein wenig unklar. Ich nehme an, dass Sie alle Zeichenfolgen des Formulars DQ [alles andere als DQ oder \ DQ] * DQ finden möchten.

Die Regex für dieses /"([^"\\]|\\"|\\[^"])*"/g

    
cacba 14.03.2013 08:56
quelle

Tags und Links