2013-03-14 8 views
8

Ich brauche einen Teil umgeben zu finden in doppelten Anführungszeichen zu finden, zum Beispiel, wie "test", "te\"st" oder "", aber nicht """ weder „\“. Um dies zu erreichen, was der beste Weg für sie in den folgendenJS regulärer Ausdruck einen Teil durch doppelte Anführungszeichen

1) /".*"/g 
2) /"[^"\\]*(?:\\[\S\s][^"\\]*)*"/g 
3) /"(?:\\?[\S\s])*?"/g 
4) /"([^"\\]*("|\\[\S\s]))+/g 

gehen ich diese Frage gestern in einem Interview gefragt wurde, und möchte die Antwort für die Zukunft kennen.

+3

Das klingt viel, wie Sie fragen * wir * eine Frage jemand gefragt hat * Sie *, wie auf einem Test oder in einem Vorstellungsgespräch. Wenn ja, solltest du * sagen * also. –

+2

Ja, Sie haben Recht. Ich wurde gestern während des Interviews nach dieser Frage gefragt und wusste nicht, wie ich darauf antworten sollte. Jetzt möchte ich wissen, dass es mir in der Zukunft helfen wird. – 2619

+0

@ x4ph4r: Ich bemerke, dass du häufig deine Fragen verlassst und gute Antworten unbeantwortet lässt (wie Gareths unten). Bitte schauen Sie sich Ihre Fragen an, um zu sehen, ob Sie nützliche Antworten erhalten haben, ziehen Sie in Betracht, diejenigen zu ticken, die Ihr Problem lösen, und überlegen Sie, ob Sie ihnen für ihre Zeit danken. – halfer

Antwort

2

bewerten Diese Ausdrücke wie folgt:

Expression 1 Treffer:

  • Ein invertierte comma
  • Gierig jedes Zeichen, einschließlich einem umgekehrten Komma oder ein Schrägstrich
  • Ein letztes Hochkomma.

Dies würde "test" some wrong text "text", passen und versagt daher

Expression 2 Treffer:

  • Ein Anführungszeichen
  • Gierig so viele Zeichen, die nicht entweder ein invertiertes Komma oder ein Schrägstrich sind
  • Gierig wie viele Sätze von
    • Jede durch einen Schrägstrich
    • Gierig wie viele Zeichen voran chracter die
  • Eine abschließende Hochkomma

So sammelt diese alle chracters innerhalb der Anführungszeichen nicht entweder ein invertiertes Komma oder ein Schrägstrich sind in Sätzen, unterbrochen von Schrägstrichen. 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.

Expression 3 Treffer:

  • Ein invertiertes comma
  • Da einige Sätze als Anfall von:
    • Irgendwelche
    • durch einen optionalen slash voran Charakter einer
  • Ein abschließender invertiertes Komma

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

Expression 4 Treffer:

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

Dies wird "test"\x, passen und versagt daher

Fazit:

Von dem, was ich sagen kann, werden beide Ausdrücke 2 und 3 arbeiten. 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 stimmen, weil es einfacher ist.

0

Ihre 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.

Der reguläre Ausdruck für diesen /"([^"\\\\]|\\\\"|\\\\[^"])*"/g

Verwandte Themen