2016-06-03 23 views
0

So habe ich die folgende Zeichenfolge:String zwischen Zeichenketten regulären Ausdruck

<GetMyeBaySellingResponse xmlns="urn:ebay:apis:eBLBaseComponents" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 


<Timestamp>2016-06-03T08:56:30.123Z</Timestamp> 

<....> 
<.....> 
</GetMyeBaySellingResponse> 

ich möchte einen regulären Ausdruck haben, die ..... zwischen dem Hauptproblem zu extrahieren, ist, dass

manchmal

kommen als

<GetMyeBaySellingResponse xmlns="urn:ebay:apis:eBLBaseComponents"> 

so ich brauche etwas, das für einen Anfangsuchenund die erste > als Präfix

Also muss ich einen Matcher, die (start with <GetMyeBaySellingResponse and end with the first >) and (end with <GetMyeBaySellingResponse/>)

+0

Und müssen Sie wirklich für diesen Ausdruck regex? Ich denke, so viel bessere Option ist die Verwendung von Parser, um den inneren Teil von XML zu bekommen. Dann müssen Sie nur das erste Element als Pfad zu xPath füllen und Sie können alles bekommen. Wenn Sie wollen, kann ich Ihnen ein funktionierendes Codebeispiel für das Parsen von XML zeigen und den inneren Teil bekommen. – Hrabosch

Antwort

2

den folgenden regulären Ausdruck verwenden.

/<GetMyeBaySellingResponse[^>]*>(?:([^<]*)<GetMyeBaySellingResponse\/>)?/ 

Gruppe 1 enthält die Zeichenfolge, falls vorhanden.


Aktualisiert für die umformulierte Frage. Der obige Ausdruck funktioniert nicht für den aktualisierten Text in der Frage. Probieren Sie den folgenden regulären Ausdruck aus, um einen beliebigen Text innerhalb der GetMyeBaySellingResponse einschließlich aller XML-Elemente abzugleichen.

/<GetMyeBaySellingResponse[^>]*>(?:((?:(?!<\/GetMyeBaySellingResponse>)(?:.|\s))*)<\/GetMyeBaySellingResponse>)?/ 
+0

seine einzige Übereinstimmung für den Fall, dass der Text ... in der gleichen Zeile ist, aber ich habe mehrere Zeilen in der .... wie können wir es beheben? – USer22999299

+0

Ich aktualisierte die Frage, die es klarer macht – USer22999299

+0

@ USer22999299 Bitte überprüfen Sie meine aktualisierte Antwort. –

1
(?:[\n]*(?:(?:<.+>)(.*)(?:<.+>)))\n* 

https://regex101.com/r/vK4fY6/3

+0

seine einzige Übereinstimmung für den Fall, dass der Text ... in der gleichen Zeile ist, aber ich habe mehrere Zeilen in der .... wie können wir es beheben? – USer22999299

+0

Ich aktualisierte die Frage, die es klarer macht – USer22999299

+0

@User Aktualisiert mit, was Sie wollen? – Jason

0

Ich denke, diese einfache Code die Arbeit machen würde.

<GetMyeBaySellingResponse [\S\s]*<\/GetMyeBaySellingResponse> 
+0

versuchen Sie es ... es funktioniert nicht – USer22999299

Verwandte Themen