2017-06-14 11 views
0

Entschuldigung für die grundlegende Frage, aber ich bin neu in regulären Ausdrücken und bin wirklich bemüht, eine Lösung für das Problem zu finden, die ich konfrontiert bin.Identifizieren Sie ein bestimmtes Feld mit RegEx

Ich versuche, ein bestimmtes Feld aus einer JSON-Antwort dynamisch herauszuziehen, die sich jedes Mal ändern kann, wenn ich sie anrufe.

Die Antwort ist:

[{"colorPartNumber":"10045112022164298","skuPartNumber":"0400218072057","productColor":{"identifier":"Dark blue","label":"Dark blue","hex":"#0000A0"},"productSize":{"identifier":"0","label":"0","name":"Designer","scaleLabel":"apparel-wmn","schema":{"name":"UK","labels":["8"]}},"soldOut":true,"onlyOneLeft":false,"limitedAvailability":false,"preorder":false,"comingSoon":false,"visible":true,"displayable":true,"buyable":false,"availableInPhysicalStore":false,"expectedShippingDate":null},{"colorPartNumber":"10045112022164298","skuPartNumber":"0400094632819","productColor":{"identifier":"Dark blue","label":"Dark blue","hex":"#0000A0"},"productSize":{"identifier":"1","label":"1","name":"Designer","scaleLabel":"apparel-wmn","schema":{"name":"UK","labels":["10"]}},"soldOut":true,"onlyOneLeft":false,"limitedAvailability":false,"preorder":false,"comingSoon":false,"visible":true,"displayable":true,"buyable":false,"availableInPhysicalStore":false,"expectedShippingDate":null},{"colorPartNumber":"10045112022164298","skuPartNumber":"0400218072040","productColor":{"identifier":"Dark blue","label":"Dark blue","hex":"#0000A0"},"productSize":{"identifier":"2","label":"2","name":"Designer","scaleLabel":"apparel-wmn","schema":{"name":"UK","labels":["12"]}},"soldOut":true,"onlyOneLeft":false,"limitedAvailability":false,"preorder":false,"comingSoon":false,"visible":true,"displayable":true,"buyable":false,"availableInPhysicalStore":false,"expectedShippingDate":null},{"colorPartNumber":"10045112022164298","skuPartNumber":"0400468014814","productColor":{"identifier":"Dark blue","label":"Dark blue","hex":"#0000A0"},"productSize":{"identifier":"3","label":"3","name":"Designer","scaleLabel":"apparel-wmn","schema":{"name":"UK","labels":["14"]}},"soldOut":false,"onlyOneLeft":true,"limitedAvailability":false,"preorder":false,"comingSoon":false,"visible":true,"displayable":true,"buyable":true,"availableInPhysicalStore":false,"expectedShippingDate":null}] 

Ich versuche, die skuPartNumber zu ziehen, aber nur, wenn der „käufliche“ Wert auf true gesetzt.

Alles, was ich versuche, ich kann nicht nur diesen einen Wert :(

So in dem obigen Beispiel der einzige Wert I ist 0400468014814 ziehen wollen scheinen, um aus.

Diese json dynamisch ist, so könnte es werden 100 Werte zurückkommen, aber das Prinzip ist das gleiche.

ein Beispiel für einen gescheiterten Versuch ist skuPartNumber(.*?)"buyable":true, das mir nur den ersten Wert gibt (0400218072057), die falsch ist.

Nochmals Entschuldigung für die Grundfrage.

+0

Warum Regex für diese Aufgabe verwenden und den JSON nicht nur mit einer Bibliothek analysieren? Scheint wie Overengineering. – Jokab

+1

Gute Frage. Ich verwende ein Tool namens LoadRunner, um eine Anwendung zu testen. Als Teil davon muss ich dynamisch Werte aus JSON-Antworten abgreifen und sie in nachfolgende Anfragen schieben. LoadRunner hat nicht viel Unterstützung für JSON, aber es unterstützt RegEx, also schien dies eine gute Wahl zu sein. – Shaqattack

+0

[LoadRunner scheint JSON-Parsing zu unterstützen.] (Https://community.saas.hpe.com/t5/LoadRunner-and-Performance/Get-a-new-way-to-manipulate-JSON-with-load-testing -in-LoadRunner/ba-p/234409 # .WUDpx2j1CUk) – jxh

Antwort

0

Versuchen Sie, die folgenden regulären Ausdruck:

\"skuPartNumber\":\"(\d+)\"(?:[^}]*?\}){3}[^}]*?\"buyable\":true 

Ihre Antwort im ersten Spiel-Gruppe ist.

+0

Das funktioniert ein Vergnügen, vielen Dank! – Shaqattack

+1

@Shaqattack Achten Sie darauf, eine Antwort zu akzeptieren, die funktioniert hat. – Jokab

Verwandte Themen