2016-11-09 4 views
1

Ich habe eine PDF-Datei in eine riesige Zeichenfolge von über 1.000.000 Zeichen verwandelt. In der Zeichenfolge sind Daten im Format dd/mm/yyyy enthalten. Ich möchte die Zeichenfolge nach Datum in kleinere teilen. Ich versuchte folgendes:Wie teilt man eine riesige Zeichenfolge nach Datum mit JavaScript?

var sectioned = hugeString.split(/^(0?[1-9]|[12][0-9]|3[01])[\/](0?[1-9]|1[012])[\/\-]\d{4}$/g); 

Aber es funktioniert nicht. Ich habe auch versucht hugeString.match(), aber kein gutes Ergebnis dort.

Ist es sogar möglich, dies durch String-Funktionen zu erreichen, oder sollte ich an einen anderen Ansatz denken?

String-Schnipsel:

....Section: 2 Interpretation E.R. 2 of 2012 02/08/2012 .....

+0

Entfernen Sie die Anker '^' und '$' aus dieser Regex. Sie werden benötigt, wenn Sie möchten, dass eine Zeichenfolge in ihrer Gesamtheit ein Datum ist, aber nicht, wenn die Zeichenfolge anderen Text enthalten darf. – trincot

+1

Probieren Sie '.split (/ (?: 0? [1-9] | [12] [0-9] | 3 [01]) [\/-] (?: 0? [1-9] | 1 [ 012]) [\/-] \ d {4} /) '- entferne Anker,' g' Modifizierer und benutze nicht einfangende Gruppen. Wrap in '(? = MUSTER HIER)', wenn Sie die Daten in den Split-Chunks teilen müssen. –

Antwort

1

Sie Anker entfernen, g Modifikator (es ist redundant) und verwenden Nicht-Erfassung Gruppen Termine zu vermeiden als auch in die Ergebnisse ausgegeben werden. Wrap in (?=PATTERN HERE), wenn Sie teilen müssen die Daten in den Split-Chunks zu halten. Wenn Sie diesen Ansatz bevorzugen, stellen Sie jedoch sicher, dass zu Beginn keine optionalen 0 s im Muster vorhanden sind oder dass Sie redundante Elemente im Ergebnis erhalten.

var s = "....Section: 2 Interpretation E.R. 2 of 2012  02/08/2012 ..... "; 
 
var res = s.split(/(?:0?[1-9]|[12][0-9]|3[01])[\/-](?:0?[1-9]|1[012])[\‌/-]\d{4}/); 
 
console.log(res); 
 
res = s.split(/(?=(?:0[1-9]|[12][0-9]|3[01])[\/-](?:0[1-9]|1[012])[\‌/-]\d{4})/); 
 
console.log(res);

Hinweis Sie hatte auch eine [\/] Unter-Pattern ohne - im Muster, während die andere Trennzeichen Klasse beiden Zeichen enthalten. Ich schlage vor, in beiden Fällen [\/-] zu verwenden.

Verwandte Themen