2016-07-29 2 views
2

Мне было интересно, как добавить новое значение (или новую строку) после ровно 5-й строки текста в NotePad ++. Мое решение (комбинации других):notepad ++ вставить значение в одну (определенную) строку (не использовать String)

Поиск: \A(.*.)\r\n(.*.)\r\n(.*.)\r\n(.*.)
Изменение: \1\r\n\2\r\n\3\r\n\4\r\n\5STRING

Входной:

12345,67890,12345,67890 
12345,67890,12345,67890 
12345,67890,12345,67890 
12345,67890,12345,67890 
12345,67890,12345,67890 
12345,67890,12345,67890 
12345,67890,12345,67890 
12345,67890,12345,67890 
12345,67890,12345,67890 
12345,67890,12345,67890 

Выход:

12345,67890,12345,67890 
12345,67890,12345,67890 
12345,67890,12345,67890 
12345,67890,12345,67890 
STRING 
12345,67890,12345,67890 
12345,67890,12345,67890 
12345,67890,12345,67890 
12345,67890,12345,67890 
12345,67890,12345,67890 
12345,67890,12345,67890 

Есть ли другой (более читаемый) вариант для этого?

+0

Использование меню => ** Поиск ** => ** Goto ... **. Выберите строку и 5, а затем начните вводить текст. – AdrianHHH

ответ

3

Вы можете использовать предельный квантор {min,max}/{exact_num} с группировкой конструкцией, которая будет соответствовать линиям, и вы также должны соответствовать всему документу с \A и \z якорями для замены шаблона для работы в обоих Replace и Find in Files:

\A((?:.*\R){4})([\s\S]*)\z 

и заменить $1STRING\r\n$2. Просто поместите курсор в начало документа и дважды нажмите Replace.

Детали:

  • \A - начало документа
  • ((?:.*\R){4}) - (группа 1 позже ссылается на с $1 из шаблона замены) Матч 4 последовательности 0+ других символов, чем в новой строки (.*) до конца строки и строки (\R, добавьте + после нее, если может быть несколько разрывов строк, или ?, если в документе может быть всего 4 строки или * if может быть 0 или больше разрывов строк)
  • ([\s\S]*) - (группа 2 позже ссылки на с $2 обратной ссылки) соответствует 0+ любые символы, включая символ новой строки до
  • \z - в самом конце документа.

Схема замещения содержит обратную ссылку $1, который относится к группе 1, STRING\r\n (STRING с CRLF LineBreak) и $2 обратной ссылки.

Теперь вы можете нажать Заменить все, и вы получите единственную замену, выполненную в вашем документе.

enter image description here

+0

Спасибо, но идея в том, что я хочу использовать его в группе файлов (с несколькими строками) в «найти в файлах» по каталогу и поместить новое значение ровно один раз в одном месте. Поэтому считать файл должен: Count: 1 совпадение (не 3 раза, когда число строк равно 15). У меня есть некоторые проблемы с восстановлением вашего шаблона \ A (?:. * \ R) {4}. Вы можете помочь ? – Khomaniac

+0

Вы имеете в виду файлы «Найти в файлах», как если бы вы нажали кнопку «Заменить все»? Я думаю, вы можете использовать '\ A ((?:. * \ R) {4}) ([\ s \ S] *) \ z' и заменить на' $ 1STRING \ r \ n $ 2' –

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