2016-04-15 4 views
-1

Ich versuche Regex zu verwenden, um zwischen einem nicht eindeutigen Textzeichenfolge und eindeutige Textzeichenfolge über mehrere Zeilen und ZeichenRegex: Extrahieren von Text zwischen nicht eindeutige Textzeichenfolge und eindeutige Textzeichenfolge

Beispiel Text zu extrahieren:

Blah 
Date: 2nd May 2015 
Blah 
Unique Report 1 
Blah 
Date: 1st April 2014 
Blah 
Blah 
Unique Report 2 
Blah 

ich versuche, das Datum „1. April“ zu erhalten, die für den einzigartigen Bericht ist 2

ich den Code versuchen:

(?<= Date:)([\d\D]+?)(Unique Report 2) 

aber von der ersten Instanz von Date den ganzen Weg ist zu extrahieren:

Gibt es eine Möglichkeit Einzigartige Report 2 und finden Sie die erste Instanz vorangeht, von Date zu gehen:

Dank

+0

Was sind die führenden und nachlaufenden Berichtsgrenzen? –

+1

Probieren Sie ['\ bDate: (. *) Aus (? = (? :(? Unique Report \ d +) [\ s \ S]) * Eindeutiger Bericht 2 \ b)'] (https://regex101.com/ r/rZ9vV1/1) –

+0

Ich verwendete ([\ d \ D] +?) als die Menge an Text zwischen "Unique Report 2" und "Date:" ist variabel und über mehrere Zeilen – user3112131

Antwort

0

Dieser sollte funktionieren, ist es nicht sehr allgemein ist aber:

Date\:(\w|[[:space:]])+(?=Blah\sBlah\sUnique Report 2) 
+0

das ist zu restriktiv. – rock321987

0

Versuchen:

(?<=Date:)(?!.*Date:)([^\n]+).*(Unique Report 2) 
+1

Das funktioniert nur mit DOTALL-Modus, sieht aber mit unangepassten Lookarounds gruselig aus. –