2016-05-26 6 views
-1

Ich habe folgendes LiteraltextReguläre Ausdrücke abrufen Text zwischen den Wörtern mit wiederkehr Muster

"Wert": "1001174227", "fieldLabel": "Ein Feld"}, { "Wert":“ dER WERT I NEED“,‚fieldLabel‘:‚Periode‘}

Mein Ziel reguläre Ausdrücke zu verwenden war die Zeichenfolge zu extrahieren

THE VALUE I NEED 

ich mit dem regulären Ausdruck unter Verwendung des Standard Start anzupassen versucht und beende die Bezeichner, indem du den Text in der Mitte ziehst (siehe meine Regex unten), aber es zieht die ganze Zeichenfolge heraus. Ich denke, das ist wegen des wiederkehrenden Textes Wert.

\"value\":\"(.*)\",\"fieldLabel\":\"Period\" 
+0

'\" value \ ": \" (. *?) \ ", \" FieldLabel \ ": \" Period \ " –

+0

Es sieht aus wie Sie versuchen, eine Art von Standard-Datenaustausch Format wie JSON . Gibt es nicht eine Bibliothek, die bereits geschrieben, getestet und debuggt wurde, die es für Sie tun kann? –

Antwort

0

Capture-nicht-Zitate:

value\":\"([^\"]*)\",\"fieldLabel\":\"Period\" 

Dies zwingt das einzige Spiel der value unmittelbar vor Ihrem Ziel.

Der Ausdruck [^"] bedeutet "ein beliebiges Zeichen kein Zitat", wodurch die Erfassungsübereinstimmung auf Zeichen zwischen Anführungszeichen beschränkt wird.

Siehe live demo zeigt Zieleingabe als Gruppe erfasst 1.

widerstreb quantifier .*? Verwendung wird nicht funktionieren, weil die erste value noch passen.

+0

Danke können Sie erklären, wie dieser Teil funktioniert ([^ \ "] *) –

+0

@peter Ich habe eine Erklärung zu der Antwort hinzugefügt – Bohemian

0

Sie in der Lage sein, es zu vereinfachen bis auf:

"([^"]*)","fieldLabel":"Period" 

auf dem Rest des Codes Je, können Sie oder müssen möglicherweise nicht " mit \" ersetzen. Zum Beispiel könnten Sie einfache Anführungszeichen (') verwenden, um die Regex-Zeichenfolge zu definieren und dadurch alle hässlichen Backslashes zu vermeiden?

+0

Dies wird den Text" DER WERT, den ich brauche "," fieldLabel ":" Period " } –

+0

Ja, und "DER WERT, DEN ICH BENÖTIGE" ist in einer Erfassungsgruppe gespeichert. –

+0

Es geht weiter mit der gesamten Ende obwohl? –