2016-11-09 64 views
1

我有一個pdf文件變成了超過1,000,000個字符的巨大字符串。字符串中的日期格式爲dd/mm/yyyy。我想按日期將字符串拆分爲較小的字符串。我試過以下:如何使用JavaScript按日期分割一個巨大的字符串?

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

但它不工作。我也嘗試hugeString.match(),但沒有好的結果。

它甚至有可能通過字符串函數來實現,或者我應該考慮一種不同的方法?

字符串片段:

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

+0

從該正則表達式中除去'^'和'$'錨點。當你想要一個字符串作爲它的全部日期時,它們是需要的,但是當字符串被允許有其他文本圍繞它時,它們是需要的。 – trincot

+1

嘗試'.split(/(?: 0?[1-9] | [12] [0-9] | 3 [01])[\/- ](?: 0?[1-9] | 1 [ 012])[\/- ] \ d {4} /)' - 刪除錨點,'g'修飾符並使用非捕獲組。如果你需要在拆分塊中保留日期,請在'(?= PATTERN HERE)中換行。 –

回答

1

可在除去錨,g改性劑(它是多餘的),並使用非捕獲基團,以避免日期被輸出,以及在結果中。如果您需要拆分,在分割塊中保留日期,請使用(?=PATTERN HERE)。但是,如果您更喜歡這種方法,請確保在開頭的模式中沒有可選的0 s,否則結果中可能會出現冗餘元素。

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);

注意你也有一個[\/]子模式但-的格局,而其他分隔符類同時包含字符。我建議在兩種情況下都使用[\/-]