У меня есть сценарий использования, в котором текстовый файл должен содержать не более 38 символов, а «страницы» - не более 28 строк. Для обеспечения этого я использую регулярные выражения. Я смог установить длину строки без каких-либо проблем, но длина страницы оказалась намного хитрее. После нескольких итераций я пришел к следующему регулярному выражению, которое, по моему мнению, должно работать, но это не так.
let expression = /(([^\f]*)(\r\n)){29,}\f/;
Это просто не приводит к совпадениям.
Если кто-то можетоставить отзыв, я очень признателен! - Джейкоб
Редактировать 1 - убрать блок кода вокруг второго выражения, возможно, это сбивало меня с толку.
Редактировать 2 - удалить следующий текст, это не уместно: Для сравнения, следующее выражениеРезультаты в одном совпадении, весь документ. Я предполагаю, что он соответствует всем строкам вплоть до последнего выражения let = /(.*(\r\n))‹29, Event
Редактировать 3 - Итак, подумав, я понял, что моя проблемаиз-за начального раздела регулярного выражения, который соответствует любым символам до новой строки, включая новые строки. Поэтому я считаю, что мне нужно сопоставить любые символы перед новой строкой, КРОМЕ (\ f \ r \ n). Тем не менее, у меня сейчас есть проблемы с реализацией этого. Я попробовал следующее:
let expression = /([^\f^\r^\n]*(\r\n)){29,}\f/;
Но это также не соответствует. Я предполагаю, что мои отрицания неверны ...
Правка 4 - У меня есть следующее регулярное выражение, соответствующее каждой строке: let expression = /([^\f\r\n]{0,}(\r\n))/;
Это довольно близко к тому, что я хочу. Все, что мне сейчас нужно, это сопоставить любые экземпляры из 29 или более строк, за которыми следует \ f