2016-12-23 5 views
2

С помощью Notepad ++ Найти и заменить функции, я хотел бы, чтобы вставить новую строку в каждом п го появления символа или строк (запятая в моем дело).Notepad ++ вставить новую строку в каждой го вхождения строки/символы

Я пробовал регулярное выражение ниже, используя режим «Регулярное выражение», но не повезло.

Найти что:((,){1000})

Заменить: \1\n

+0

бы эту работа : '(((. *?),) {1000})'? Я не мог понять регулярное выражение. – Pugazh

+0

Регулярное выражение в вашем комментарии выглядит поближе, вы попробовали? –

+0

Не совсем понятно: каждое n-е вхождение в * файл * или * строка *? –

ответ

3

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

(?:.*?,){2} 

и заменить на $&\n (или $&\r\n), где .*? соответствует любым 0+ символам чем символы разрыва строки, как можно меньше, вплоть до первого появления ,. $& - это обратная ссылка на все значение матча (2 используется для демонстрации, чтобы выглядеть чище, 1000 - довольно большое значение). См. Демонстрацию, показывающую, что после каждой второй строки помещается новая строка ,.

С одной полукоксом, лучше использовать отрицание класса символов (но добавить символы перевода строк там, чтобы заставить шаблон, чтобы не перелив через линию):

(?:[^\n\r,]*,){2} 

enter image description here

+1

Awesome, спасибо! – Pugazh

+0

Как вы это сделаете в vim? –

+0

@ DanielvanFlymen: В Vim вам нужно заменить '\ r', чтобы вставить новую строку. И поскольку классы символов Vim не соответствуют разрыву строк, нет необходимости использовать '\ n \ r' в' [...] '. И обратная ссылка на весь матч - '&'. Итак, попробуйте ':% s/\ ([^,] *, \) \ {2}/& \ r/g'. –

Смежные вопросы