Блокнот ++ Якщо рядок містить слово, замініть рядок на певній відстані нижче фразою


0

Я впевнений, що це можливо, і я думаю, що це стосується Regex, але я не маю поняття, як працює форматування регексу, і я ще не зміг знайти вираз, який мені потрібен би де-небудь ще.

В основному у мене є файл і хочу знайти кожен рядок, що містить слово сок, і змінити рядок 10 вниз і 34 символи, замінивши існуюче число (майже всі починають 0,0) на 1.


1
Буде здорово, якби ви могли надати нам приклад та бажаний вихід :)
Бенджамін

Так, це буде можливо. Будь ласка, надайте вибіркові дані.
DavidPostill

Відповіді:


1

Почну з невеликого прикладу, щоб відповідь було легше пояснити. Якщо у вашому питанні було знайти 3 внизу та замінити 9-й символ на "1":

Знайти що: (.*juice.*\r\n)(.*\r\n.*\r\n)(.{8})(.)

Замінити: $1$2${3}1

Режим пошуку: регулярне вираження

Пояснення

Query:
()   Defines register in regex query. Later to be referenced as ${number}
.*   Defines 0 or more of any character
\r\n Defines a newline
.{8} Defines any character 0 or one time, {8} times
(.)  Defines one character, puts it in its own register 
     In this example, it is register $4, and unused in the replacement

Replace:
$1   Recall register 1 (line containing the word juice)
$2   Recall register 2 (multiple newlines to get us to the third row)
${3} Same meaning as $3, with the "3" in brackets so that it doesn't appear 
     as $31.
$3   Recall register 3 (text before the 9th character)
$4   Contains the contents of register 4. Not recalled, so this text is "replaced" 
     when the full substitution occurs.
1    Literal output the number 1.

Буквальна відповідь на ваше запитання замінить вміст Find whatполя чимось на зразок наступного:

(.*juice.*\r\n)(.*\r\n.*\r\n.*\r\n.*\r\n.*\r\n.*\r\n.*\r\n.*\r\n)(.{33})(.)

Я рекомендую вивчити регекс. Це не специфічний ресурс NotePad ++, але він не такий сухий, як деякі підручники з регулярного вибору я прочитав: http://www.grymoire.com/Unix/Regular.html

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.