4

Руководство Notepad++ довольно расплывчато по специальному символу для чисел, используемых в расширенном режиме поиска. В нем говорится: \d ### - Десятичное значение (между 000 и 255), но буквальный ввод "\d ###" ничего не соответствует.

Что я пытаюсь сделать, это заменить

if VarA == 12
  VarB = 1

с

if VarA == 12
  Var12=1
  VarB=1

4 ответа4

2

Я просто искал ответ на этот вопрос. Взглянув на вики NP++, я не думаю, что \d соответствует тому, что мы хотим, чтобы оно совпадало.

\d
десятичное представление байта, составленное из 3 цифр в диапазоне 0-9

Это не соответствует обычному числовому символу, это соответствует байт-коду. Следуйте \d с 3-значным числом, и оно будет соответствовать соответствующему символу ASCII.

Другими словами, \d032 соответствует символу пробела, \d033 соответствует восклицательному знаку и так далее. Смотрите здесь список кодов.

К сожалению, это означает, что вы не можете просто сопоставить "любую цифру" с помощью расширенных опций, вам придется использовать регулярные выражения и найти способ обойти проблему с новой строкой.

2

У меня была точно такая же проблема! Я нашел обходной путь. Во-первых, используйте расширенный режим поиска (то, что вы называете «промежуточным режимом»), чтобы найти и заменить все символы новой строки каким-либо случайным символом, которого нет в тексте. Например, я заменил все символы новой строки на тильду ('~'). Затем переключитесь в режим поиска «Регулярное выражение», и теперь вы можете искать новые строки, ссылаясь на них по замененному символу. Как только вы закончите манипулировать текстом с помощью команды find и replace, переключите случайный символ обратно на новые строки. Это оно!

1
if VarA == 12  
    VarB = 1

if VarA == 16  
    VarB = 0

Использование Find/Replace с регулярным выражением

Найти что: if VarA == ([0-9]+)
Заменить на: if VarA == \1 \n\t Var\1=1

Выполнить "Заменить все"

Результат:

if VarA == 12  
     Var12=1  
    VarB = 1

if VarA == 16  
     Var16=1  
    VarB = 0 

Это то, что ты искал?

0

Попытка уточнить: Как я понимаю ваш код, вы пытаетесь найти:

если VarA ==

а затем сохранить числовое значение, а затем заменить его

если VarA == Var = 1.

Проблема не в поиске, а в том, что вы пытаетесь сохранить значение. Я не знаю, может ли функция поиска / замены сделать такую вещь.

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