3

Как найти и заменить в Notepad++ несколько разных символов на соответствующие буквы сразу по всему тексту? Например, у меня есть 32 символа, которые я хочу заменить. Итак, у меня есть такой символ, как «А», и я хочу заменить его буквой «А». Далее у меня есть символ, такой как «Æ», и я хочу заменить его на букву «Ж» и так далее. Обычно у меня 32 таких персонажа, и каждый раз мне нужно выполнять одну и ту же операцию. Есть ли способ сделать это сразу?

Изображение, демонстрирующее запрос

3 ответа3

1

Иногда я использовал wReplace от sharktime.com. Это работает довольно хорошо. Вы устанавливаете его и затем можете указать столько символов, сколько хотите изменить.

Я знаю, что это не решение в стиле плагинов , но оно работает. Надеюсь это поможет!

Это очень просто в использовании.Это изображение до / после

0

Даже с новым движком RegEx в Notepad++ 6, который поддерживает PCRE (исходный код), нет здравого (т. Е. С линейной сложностью) и надежного (т. Е. Гарантированно работающего) подхода, который позволит вам добиться этого в одном Find & Replace, не говоря уже о один Поиск в файлах.

Вы можете, однако, добиться этого с помощью поиска в файлах дважды:

  1. Добавьте матрицу подстановки к каждому вхождению любого из старых символов:

    Find what:    ([ÌÍÎÏÐÑ])
    Replace with: ``\1`ÌH`ÍO`ÎΠ`ÏP`ÐC`ÑT``
    Search Mode:  Regular Expression
    

    Это превращает, например, foo fooÌbar в foo``Ì`ÌH`ÍO`ÎΠ`ÏP`ÐC`ÑT``bar .

  2. Замените каждый старый символ (и матрицу подстановки) соответствующим новым символом:

    Find what:    ``(.).*?`\1(.).*?``
    Replace with: \2
    Search Mode:  Regular Expression
    

    Это, например, преобразует foo``Ì`ÌH`ÍO`ÎΠ`ÏP`ÐC`ÑT``bar в H

Обратите внимание, что для этого вам нужно перейти на Notepad++ 6.0 или выше . В то время как само регулярное выражение также должно работать со старым движком RegEx, в общем есть ошибка, которая путает многобайтовые символы.

Как это устроено

    • Набор символов ([ÌÍÎÏÐÑ]) соответствует любому из этих пяти символов.

      Скобки превращают это в первое подвыражение (см. Следующий пункт).

    • \1 символизирует совпадение первого подвыражения, то есть символа, который мы хотим заменить.

    • Все остальные персонажи трактуются буквально.

    • Выбор ` в качестве разделителя является произвольным. Вы можете использовать любой другой символ, который вы хотите.

    • (.) соответствует первому символу после `` .

      Скобки превращают это в первое подвыражение.

    • .*? соответствует как можно меньшему числу символов.

    • `\1 ` следует матч первого подвыражения, то есть символ , который мы хотим заменить.

    • (.) соответствует первому символу после символа, который мы хотим заменить. По нашему замыслу, это его символ замены.

      Скобки превращают это во второе подвыражение.

    • .*?`` соответствует как можно меньшему числу символов, пока не встретится последний `` .

Для получения дополнительной информации о регулярных выражениях, обратитесь к:

0

Этот предыдущий вопрос дает ответ. Короткая версия в Notepad++ без плагинов невозможна из-за способа поиска и замены.

Я бы посмотрел на использование sed или подобного.

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