2016-06-13 5 views
0

Я работаю с текстовым файлом с более чем 1000 документами внутри. Большая часть документа очень похожа, начиная и заканчивая одним макетом. Я пытаюсь разделить текст в массиве, и каждый элемент будет документом:Использование регулярных выражений для разграничения текста

let documents = [ 
    [], <- doc1 
    [], <- doc2 
    .... 
]; 

Для достижения этой цели я использую гигантское регулярное выражение, что получить общее количество страниц документа (у меня есть эта информация на первой странице) и занимает все =>[\s\S]*? < = до последней страницы. не работает очень хорошо, потому что некоторые документы могут не иметь последней страницы, так что ловить два документа вместо одного.

http://regexr.com/3dk54

Здесь регулярное выражение догоняет две документы, но если вы удалите Z6: 0 и будет видеть проблему.

Можно ли исправить это?

Спасибо.

+0

'text.split (/^(? =, Ministério)/м)' должна работать достаточно хорошо для образца текста вы публикуемую. – Tomalak

+0

http://regexr.com/3dk5d Это вызывает бесконечность. Можете ли вы показать мне рабочий пример? –

+0

Не проверяйте это с помощью регулярного выражения. Это выражение, специально предназначенное для разделения вашей строки. Он ничего не соответствует. – Tomalak

ответ

0

Использование простого регулярного выражения должно быть прекрасным. Здесь im использует% start% и% end%, чтобы разграничить каждый документ. Замена его вашим текущим разделителем также должна работать нормально.

"your-whole-document-content".match (/(%start%)(.*?[\n\r]?)*?(%end%)/g) 

Если ваш разделитель использует какой-либо особый символ, не забудьте открыть их.

EDIT

"your-whole-document-content".match (/(MINISTÉRIO)[\s\S]*?(?=,\1)/g) 
+0

http://regexr.com/3dk5g Нравится? Можете ли вы снять Z6 с первого матча и проверить? –

+0

Я только что отредактировал с новым регулярным выражением, которое, я считаю, работает над тем, что вам нужно. –