Я почти уверен, что это возможно, и я думаю, что это касается Regex, но я понятия не имею, как работает форматирование regex, и я пока не смог найти выражение, в котором бы я ни нуждался.

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

1 ответ1

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .