2016-10-13 2 views
1

In App finde ich bauen Schienen zu lernen, ich arbeite Daten zu finden. Jetzt habe ich diesen Fall: In diesem Text möchte ich den richtigen Liefertermin finden.Rails - Regex bestimmten Datum

„Liefertermin 2015.01.12 Lieferscheins 30.112.016 Rechnungsdatum 03.01.2016“

Die Regex ich die Daten alle erhalten zusammen:

[0-9]{1,2}[-.\/][0-9]{1,2}[-.\/][0-9]{2,4} 

Wie die Bedingung hinzuzufügen, dass es das nimmt Datum vor "Lieferdatum"?

+0

es das Muster hinzufügen und das Datum erfassen - '/ Liefertermin \ s * (\ d {1,2} [-. \ /] \ D {1,2} [-. \ /] \ D { 2,4})/' –

Antwort

1

delivery date das Muster hinzufügen und das Datum erfassen:

s[/delivery date\s*(\d{1,2}[-.\/]\d{1,2}[-.\/]\d{2,4})/, 1] 

das

Das 1 Argument online Ruby demo Siehe sagt Rubin nur, um den Inhalt innerhalb der ersten Erfassungsgruppe zu holen jetzt gefangen.

Gerade falls Sie Ihre Reisedaten interessiert sind, die konsistente Separatoren haben, können Sie prüfen, mit

/delivery date\s*(\d{1,2}([-.\/])\d{1,2}\2\d{2,4})/ 
         ^^^^^^^^  ^^ 

wo der Separator in Gruppe erfasst wird 2 und der Wert wieder verwendet wird später mit dem Rückreferenzierung \2.

+0

auf rugular.com gibt es keine Übereinstimmungen. Siehst du den Unterschied nicht? –

+1

Siehe [Rubular-Demo] (http://rubular.com/r/swuM2lcVNC). Alles funktioniert wie erwartet. Ich habe vergessen, den abschließenden Regex-Begrenzer im zweiten Beispiel hinzuzufügen, jetzt behoben. [Hier] (http://rubular.com/r/erSVHJNmRE) ist der Link zur zweiten Musterdemo. –

+0

Wie füge ich dann nur das Datum hinzu (ohne den Begriff Lieferdatum)? wie du es mit dem ... gemacht hast, 1] –